我想遍历数组以便用打字稿填充对象。
在香草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
。
答案 0 :(得分:2)
您可以使用type assertion来告诉编译器{}
是IObj
类型的对象:
var obj: IObj = <IObj>{}
这基本上告诉编译器“相信我,我知道我在做什么。” 。
这是一个强大的功能,它带有责任感。负责任地使用它。