【问题标题】:Typescript extend object that implements interface with dynamic properties打字稿扩展对象,实现具有动态属性的接口
【发布时间】:2023-03-29 13:40:02
【问题描述】:

我有一个实现接口的对象:

interface ILoadedComponent {
    property1:string;
    property2: numberl;
}
class SomeClass {
    loadedComponent:ILoadedComponent = {
        property1:'x',
        property2: 10
    }
}

但我想在已实现的接口上增加额外的属性:

class SomeClass {
        loadedComponent:ILoadedComponent = {
        property1: 'x',
        property2: 10,
        property3: 'y',
        property4: 60
    }
}

为了扩展已实现的接口,我得到一个编译器错误:

 ... is not assignable to type SomeClass ...
Object literal may only specify known properties, and 'property3' does not exist in type 'SomeClass '.

如何使用对象字面量扩展接口

【问题讨论】:

标签: typescript


【解决方案1】:

@Tomas Katz ,你错误地实现了一个接口,你在SomeClass 中创建了ILoadedComponent 组件类型的属性。

如果你想实现一个接口并添加新属性,你必须使用它,如下所示

class SomeClass implements ILoadedComponent{
        property1: 'x',
        property2: 10,
        property3: 'y',
        property4: 60
}

如果您想在SomeClass 中使用loadedComponent 属性,那么您必须创建一个单独的类来实现该接口,或者您必须在另一个接口中使用extendILoadedComponent 接口并在@987654328 中使用该接口@

【讨论】:

  • 但是我需要SomeClass中的对象loadedComponent来实现接口,而不是类本身......也许我需要使用类型?
  • 然后你必须创建一个单独的类来实现 ILoadedComponent 并添加额外的属性,并将该类用作SomeClass中的类型
  • 但我想动态添加属性...未知的动态属性
猜你喜欢
  • 2017-06-29
  • 2020-01-19
  • 2020-12-25
  • 2019-05-04
  • 2022-01-11
  • 1970-01-01
  • 2019-10-03
  • 2020-12-17
相关资源
最近更新 更多