如果我做一个对象
const data = {}
然后尝试向其添加对象
const data = {};
data.shared = {};
我收到错误Property 'shared' does not exist on type '{}'.ts(2339)
我手动添加
const data = {
shared: {},
};
然后当我想有条件地添加一个值时回到同样的问题
if (true) data.shared.username = 'test'
Property 'username' does not exist on type '{}'.
答案 0 :(得分:2)
我将创建一个接口来定义数据结构,如下所示:
interface IData {
shared?:{
username?: string;
// here any other properties you want to conditionally add
}
}
通过这种方式,编译器始终知道会发生什么
然后您可以将数据声明为:
const data: IData = {}
答案 1 :(得分:2)
尽管apokyrfos的答案是正确的,但使用Typescript的最佳实践是在可能的情况下避免使用any
-使用any
类型首先会挫败使用Typescript的好处。
您可以做的是使用索引签名声明对象:
const data: {[key: string]: SomeType} = {};
这样,您可以随时分配data.shared
,只要“ SomeType”允许您分配的类型即可(如果您在此处分配了不同但相似的对象,考虑使用接口)。