未定义的打字稿对象属性

时间:2019-10-23 13:00:58

标签: javascript typescript

这是我的代码

file.js

const channel = {},
arr = [string,string,string];
for(let i = 0;i < arr.length;i++ ){
    channel[arr[i]] = "Amo" //equal string value
}

一个数组仅包含字符串值。示例["a","b","c","n"]。 如何在打字稿中编写此代码?

1 个答案:

答案 0 :(得分:2)

JS和TS之间的唯一区别是强烈键入代码的概念。 在这种情况下,您希望将此代码从JS迁移到TS,您无需执行任何操作,因为TS编译器将能够推断变量的类型。如果您确实想强制使用变量的类型,则可以执行以下操作:

interface channelObj {
    [key: string]: string
} // This is called index signature and is useful for typing object key-value
const channel: channelObj = {},
arr: string[] = [string, ...];
for(let i = 0;i < arr.length;i++ ){
    channel[arr[i]] = "Amo" //equal string value
}