如果我想在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;