網站搜尋

陣列 - 如何使用 TypeScript 的字串索引介面?


我想使用介面的字串索引。

interface IDictionary {
     [index: string]: string;
}
var params: IDictionary;
params = [{ "heart": "HP" }, { "mana": "MP" }];
console.log(params);

我以為這可能像 MAP,例如一對鍵和值。我不確定這是不是正確的方法。

答案#1

使用索引器會限制使用索引語法對物件可以放入或取出的內容。例如,foo 被推斷為 string 類型:

interface IDictionary {
     [index: string]: string;
}
var params = {} as IDictionary;

params['heart'] = 'HP'; // okay
var foo = params['heart']; // foo:string

另一方面,以下是錯誤的,因為它無法通過類型檢查:

var bar:number = params['heart']; // ERROR
params['heart'] = 234; // ERROR

完整示範:

interface IDictionary {
     [index: string]: string;
}
var params = {} as IDictionary;

params['heart'] = 'HP'; // okay
var foo = params['heart']; // foo:string


var bar:number = params['heart']; // ERROR
params['heart'] = 234; // ERROR