我想遍历数组以便用打字稿填充对象。

在香草JS中,我会这样做:


var arr = ['a', 'b'];

var obj = {};
arr.map((v,ii) => {obj[v] = ii});

console.log(obj); // => obj = {a: 0, b: 1}





现在在打字稿中,我想做类似的事情,但要输入对象:

interface IObj = {a: number; b: number}

var arr = ['a', 'b'];

var obj:IObj = {};
arr.map((v,ii) => {obj[v] = ii}});


因为{}没有类型IObj,这将吐出一个错误。

我知道我可以将obj的类型声明为IObj | {},但是我代码的其他部分只希望使用IObj

最佳答案

您可以使用type assertion告诉编译器{}IObj类型的对象:

var obj: IObj = <IObj>{}


这基本上告诉编译器“相信我,我知道我在做什么”。
这是一个强大的功能,并且附带责任。负责任地使用它。

09-11 19:44