Luc*_*ähn 8 typescript angular
所以我正在开发一个Angular项目,并创建了这个界面,以便能够显示一些数据:
export interface UserData {
name: string,
vorname: string,
strasse: string,
plz: string,
ort: string,
handynummer: string,
telefonnummer: string,
}
Run Code Online (Sandbox Code Playgroud)
如果我想显示在我的数据库中添加更多数据,我将不得不将这些数据点添加到此接口,有没有办法动态创建接口,或在组件构造器中创建它?
vin*_*nce 13
您无法动态更改/创建接口,因为它只是一个静态值,用于由Typescript编译器进行结构类型检查.
但是,如果您需要该接口上的所有属性和其他属性,则可以执行以下操作:
使用 extends
在组件上创建一个通用类型,如下所示:
@Component({
selector: 'example'
template: `<h1>example</h1>`
})
export class ExampleComponent<T extends UserData> {}
Run Code Online (Sandbox Code Playgroud)
现在您可以拥有类型为T且必须具有所有UserData属性的数据,然后添加您想要的任何其他属性.
您还可以使用extends为此特定情况创建新界面.
interface ExtendedUserData extends UserData {
someOtherProperty: string
}
Run Code Online (Sandbox Code Playgroud)
使用交叉点类型
这可能接近您正在寻找的那种"动态"行为.假设您有一个属性,该属性需要是具有所有属性UserData和附加属性的对象extraProperty.
你可以这样打字.
fancyUserData: UserData & { extraProperty: string }
Run Code Online (Sandbox Code Playgroud)
使用交集类型,您可以临时添加属性.
简而言之,没有你不能真正构建动态类型,绝对不能在组件的构造函数中.但是,您可以使用我上面提到的方法根据需要扩展和模拟您的接口.
| 归档时间: |
|
| 查看次数: |
5794 次 |
| 最近记录: |