填充打字稿中的空类型对象

时间:2019-01-08 14:45:36

标签: javascript typescript

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

在香草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

1 个答案:

答案 0 :(得分:2)

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

var obj: IObj = <IObj>{}

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