强类型打字稿集合

时间:2016-08-02 18:46:21

标签: javascript types typescript

我试图使用"集合" (这个范例实际上是什么样的?)在打字稿中并强烈输入。在javascript中我会写这样的东西。

var array = [1,2,3,4];
var collection = {};

for(var x in array){
  collection['item-'+x] = x;
}

我有一个对象,我使用这个collection[name]语法添加/删除元素。

这很好,因为我不需要关心索引。 现在,当我创建一个数组时,我可以声明它并给它一个类型。

let array: string[] = [];

这将如何等同于此集合语法,例如我有一个这样的集合。

var days = {};

days[moment().day('monday')] = new dayType('Monday');
days[moment().day('tuesday')] = new dayType('Tuesday');

这很有用,但如果我访问我的收藏集days[moment().day('monday')].Name,我不知道这实际上是我的dayType类,还是只有一个Name属性的对象。与属性名称相同。我可以添加days['July']: = false;就好了,即使在我的对象的上下文中没有意义。

这只是一种不适合typeScript的范例吗?

这个范例叫做什么?

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您在这里使用的结构看起来像字典。请尝试以下方法:

var days : { [key: string]: dayType; } = {};

days[moment().day('monday')] = new dayType('Monday');

您还可以使用界面进行简写:

interface dayDictionary {
    [key: string]: dayType;
}

var days: dayDictionary = { };

请参阅:TypeScript Objects as Dictionary types as in C#

相关问题