我想遍历数组以便用打字稿填充对象。
在香草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>{}
这基本上告诉编译器“相信我,我知道我在做什么”。
这是一个强大的功能,并且附带责任。负责任地使用它。