angular – 将属性添加到接口typescript

前端之家收集整理的这篇文章主要介绍了angular – 将属性添加到接口typescript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我正在开发一个Angular项目,并创建了这个界面,以便能够显示一些数据:

export interface UserData {
  name: string,vorname: string,strasse: string,plz: string,ort: string,handynummer: string,telefonnummer: string,}

如果我想显示在我的数据库添加更多数据,我将不得不将这些数据点添加到此接口,有没有办法动态创建接口,或在组件构造器中创建它?

解决方法

您无法动态更改/创建接口,因为它只是一个静态值,用于由Typescript编译器进行结构类型检查.

但是,如果您需要该接口上的所有属性和其他属性,则可以执行以下操作:

使用扩展

在组件上创建一个通用类型,如下所示:

@Component({
  selector: 'example'
  template: `<h1>example</h1>`
})
export class ExampleComponent<T extends UserData> {}

现在,您可以拥有类型为T且必须具有所有UserData属性的数据,然后添加您想要的任何其他属性.

您还可以使用extends为此特定情况创建新界面.

interface ExtendedUserData extends UserData {
 someOtherProperty: string
}

使用Intersection types

这可能接近您正在寻找的那种“动态”行为.假设您有一个属性,该属性需要是具有UserData的所有属性和附加extraProperty的对象.

你可以这样打字.

fancyUserData: UserData & { extraProperty: string }

使用交集类型,您可以临时添加属性.

简而言之,没有你不能真正构建动态类型,绝对不能在组件的构造函数中.但是,您可以使用我上面提到的方法根据需要扩展和模制您的接口.

猜你在找的Angularjs相关文章