强类型的打字稿集合
Posted
技术标签:
【中文标题】强类型的打字稿集合【英文标题】:Strongly typed typescript collections 【发布时间】:2016-12-08 06:27:22 【问题描述】:我正在尝试在打字稿中使用“集合”(这种范式实际上叫什么?)并对其进行强类型化。在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 的范式吗?
这个范式叫什么?
有更好的方法吗?
【问题讨论】:
TypeScript Objects as Dictionary types as in C#的可能重复 【参考方案1】:您在此处使用的结构看起来像字典。请尝试以下操作:
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#
【讨论】:
谢谢!界面将完美运行,从现在开始我将不得不使用它。以上是关于强类型的打字稿集合的主要内容,如果未能解决你的问题,请参考以下文章