首页 文章

强类型打字稿集合

提问于
浏览
1

我正试图在打字稿中使用“集合”(这个范例实际上叫做什么?)并强制输入它们 . 在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 回答

  • 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#

相关问题