将属性添加到类实例

时间:2019-04-07 17:16:00

标签: angular typescript

让我们考虑以下代码:

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;

1 个答案:

答案 0 :(得分:3)

好吧,创建类并使用TypeScript的想法是将对象属性限制为在其上定义的属性...

inst [“ z”]之所以有效,是因为您吸引了普通的javascript行为-TypeScript允许的行为。

但是,如果确实需要允许您的班级接收新属性,则可以将其更改为:

class MyClass {
    [key: string]: any;
    x: number;
}