访问对象文字的 属性 时出现 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 编译器 data
是 Object
类型或任何派生的 class 类型 - 作为类型Object
没有属性 a
或 b
这会导致错误。
请注意,删除显式类型注释与使用 AD.Net 建议的 any
不同,因为在这种情况下,TypeScript 仍然具有所有可用的类型信息 - 只是推断(参见Visual Studio 代码的屏幕截图),而使用 any
你是在告诉 TypeScript 编译器该变量可以引用任何不会导致类型检查的内容。
我是 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 编译器 data
是 Object
类型或任何派生的 class 类型 - 作为类型Object
没有属性 a
或 b
这会导致错误。
请注意,删除显式类型注释与使用 AD.Net 建议的 any
不同,因为在这种情况下,TypeScript 仍然具有所有可用的类型信息 - 只是推断(参见Visual Studio 代码的屏幕截图),而使用 any
你是在告诉 TypeScript 编译器该变量可以引用任何不会导致类型检查的内容。