如果我想在Javascript中以编程方式将一个属性分配给一个对象,我会这样做:
var obj = {};
obj.prop = "value";
但在TypeScript中,这会产生一个错误:
属性“prop”在类型为“{}”的值上不存在
我应该如何在TypeScript中分配任何新属性给对象?
如果我想在Javascript中以编程方式将一个属性分配给一个对象,我会这样做:
var obj = {};
obj.prop = "value";
但在TypeScript中,这会产生一个错误:
属性“prop”在类型为“{}”的值上不存在
我应该如何在TypeScript中分配任何新属性给对象?
当前回答
既然你不能这样做:
obj.prop = 'value';
如果你的TS编译器和linter没有严格要求你,你可以这样写:
obj['prop'] = 'value';
如果你的TS编译器或linter是严格的,另一个答案将是类型转换:
var obj = {};
obj = obj as unknown as { prop: string };
obj.prop = "value";
其他回答
您可以添加此声明来屏蔽警告。
declare var obj: any;
最好的做法是使用安全输入,我建议你:
interface customObject extends MyObject {
newProp: string;
newProp2: number;
}
另一个方法是将属性作为一个集合来访问:
var obj = {}; obj['prop'] = “值”;
最简单的是
const obj = <any>{};
obj.prop1 = "value";
obj.prop2 = "another value"
尽管编译器抱怨它仍然应该按照你的要求输出它。然而,这是可行的。
const s = {};
s['prop'] = true;