繁体   English   中英

强类型打字稿集合

[英]Strongly typed typescript collections

我正在尝试在打字稿中使用“集合”(实际上是什么范式?),并对它们进行强类型打字。 在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');

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

这只是不适合TypeScript的范例吗?

这个范式叫什么?

有更好的方法吗?

您在此处使用的结构看起来像字典。 请尝试以下操作:

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

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

您还可以使用接口作为速记:

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

var days: dayDictionary = { };

请参阅: TypeScript对象作为字典类型,如C#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM