访问对象文字的 属性 时出现 TypeScript 错误

TypeScript error when accessing property of object literal

我是 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没有错误) 请给我解释一下。 感谢您的帮助。

可以赋值data:any,至少不会报错。如果你想要智能感知,你需要为 data 创建一个 type/interface,例如

interface myData{
    a:string;
    b:Array<String>
}
data:myData

然后你就可以拥有智能感知了。

只需删除 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 编译器 dataObject 类型或任何派生的 class 类型 - 作为类型Object 没有属性 ab 这会导致错误。

请注意,删除显式类型注释与使用 AD.Net 建议的 any 不同,因为在这种情况下,TypeScript 仍然具有所有可用的类型信息 - 只是推断(参见Visual Studio 代码的屏幕截图),而使用 any 你是在告诉 TypeScript 编译器该变量可以引用任何不会导致类型检查的内容。