gpt4 book ai didi

angular - 使用可选键从界面创建新类型

转载 作者:行者123 更新时间:2023-12-04 07:23:44 25 4
gpt4 key购买 nike

假设我有一个名为 ISeminar 的接口(interface)

export interface ISeminar {
id: number;
title: string;
description: string;
registrationStartDate: any;
registrationEndDate: any;
seminarStartTime?: any;
seminarEndTime?: any;
companyList?: any;
status?: Status;
}
我可以通过使用为我的控件对象创建一个新类型
controls: { [key in keyof ISeminar] : FormControl}; 
但是在这里,界面的所有键都是强制性的。我想保留界面中可选的键,控制对象中的可选键。

最佳答案

请注意,TypeScript 默认情况下根本不会编译接口(interface),除非它需要。如果确实如此(就像您的情况一样),它会将其编译为普通的旧 javascript 对象。在 javascript 中没有“可选”字段的概念。
如果你真的需要创建FormControls在您的界面之外,我想您最好的选择是拥有两个界面,例如

export interface IBaseSeminar {
id: number;
title: string;
description: string;
registrationStartDate: any;
registrationEndDate: any;
}
和一些扩展接口(interface),例如
export interface IScheduledSeminar extends IBaseSeminar  {
seminarStartTime?: any;
seminarEndTime?: any;
companyList?: any;
status?: Status;
}
然后您可以迭代基类的键,并在需要时使用扩展的键。
但就我个人而言,我不会为了像这样迭代它们的键而改变模型/接口(interface)(除非这实际上适合您的应用程序的域)。

关于angular - 使用可选键从界面创建新类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68343131/

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