gpt4 book ai didi

angular - 将属性添加到接口(interface) typescript

转载 作者:太空狗 更新时间:2023-10-29 17:17:42 24 4
gpt4 key购买 nike

所以我正在做一个 Angular 项目并创建了这个界面来显示一些数据:

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

如果我想在我的数据库中显示添加更多数据,我必须将这些数据点添加到这个接口(interface),有没有办法动态创建接口(interface),或者在组件构造函数中创建它?

最佳答案

您不能动态更改/创建接口(interface),因为它只是一个静态值,用于 Typescript 编译器的结构类型检查。

但是,如果您需要该接口(interface)上的所有属性和一个附加属性,您可以做一些事情:

使用extends

您还可以使用 extends 为这种特定情况创建新接口(interface)。

interface ExtendedUserData extends UserData {
someOtherProperty: string
}

使用Intersection types

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

你可以这样输入。

fancyUserData: UserData & { extraProperty: string }

对于交集类型,您可以临时添加属性。

在 Angular 中的使用

为了在 Angular 中使用这些类型,你可以在你的组件上创建一个泛型类型,看起来像这样:

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

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

所以简而言之,不,你不能真正构建动态类型,而且绝对不能在组件的构造函数中构建。但是,您可以根据需要使用我上面提到的方法来扩展和塑造您的界面。

关于angular - 将属性添加到接口(interface) typescript ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com