如何使用typescript的字符串索引接口?

idp*_*ute 16 arrays interface typescript

我想使用接口的字符串索引.

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

我认为这可能像MAP,如一对关键和价值.我不确定这是正确的做法.

bas*_*rat 19

使用索引器限制使用索引语法可以为对象放置或获取的内容.例如foo,推断为类型string:

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

params['heart'] = 'HP'; // okay
var foo = params['heart']; // foo:string
Run Code Online (Sandbox Code Playgroud)

另一方面,以下是错误,因为它不会键入检查:

var bar:number = params['heart']; // ERROR
params['heart'] = 234; // ERROR
Run Code Online (Sandbox Code Playgroud)

完整演示:

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
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记你需要初始化params ..`params = {};` (4认同)