簡體   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