我是TypeScript的初学者。
访问Object
的数据时,我遇到了一些问题。
let content:Array<string> = ["I", "am", "a", "beginner"]
let data:Object = {a: "foo", b: content}
console.log(data.a);
console.log(data['b']);
console.log(data.b);
此代码在第5行会有错误。(JavaScript中没有错误) 请给我解释一下。 谢谢你的帮助。
答案 0 :(得分:2)
只需将data
的显式声明删除为Object
,以便TypeScript推断出类型,即将其更改为此类
let content:Array<string> = ["I", "am", "a", "beginner"]
let data = {a: "foo", b: content}
console.log(data.a);
console.log(data['b']);
console.log(data.b);
您的初始代码中出错的原因是因为您告诉TypeScript编译器data
类型为Object
或任何派生类,因为类型Object
具有没有属性a
或b
这会导致错误。
请注意,删除显式类型注释与使用AD.Net建议的any
不同,因为在这种情况下,TypeScript仍然具有所有可用的类型信息 - 只是推断(参见屏幕截图Visual Studio Code),而通过使用any
,您告诉TypeScript编译器该变量可以引用任何不会导致类型检查的内容。
答案 1 :(得分:0)
您可以指定data:any
,至少您不会收到任何错误。如果您想要智能感知,则需要为type/interface
创建data
,例如
interface myData{
a:string;
b:Array<String>
}
data:myData
然后你可以有intellisense。