将属性添加到类实例

问题描述 投票:0回答:1

我们考虑以下代码:

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;
angular typescript
1个回答
3
投票

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

inst [“z”]有效,因为你吸引了一个vanilla javascript行为 - 在TypeScript上允许什么。

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

class MyClass {
    [key: string]: any;
    x: number;
}
© www.soinside.com 2019 - 2024. All rights reserved.