让我们考虑以下代码:
class MyClass{
x: number;
}
const inst = new MyClass();
inst.x = 8;
inst.y = 9;
inst["z"] = 10;
Typescript编译器抱怨在y
实例中添加MyClass
属性。 z
属性不是这种情况。
基于Typescript的行为是否试图为类或其他所有实例的所有实例保持相同的形状?
实际上,我正在使用Angular,并且在尝试将值分配给先前未定义的属性时,例如组件内部出现上述行为。
this.prop = 5;
答案 0 :(得分:3)
好吧,创建类并使用TypeScript的想法是将对象属性限制为在其上定义的属性...
inst [“ z”]之所以有效,是因为您吸引了普通的javascript行为-TypeScript允许的行为。
但是,如果确实需要允许您的班级接收新属性,则可以将其更改为:
class MyClass {
[key: string]: any;
x: number;
}