gpt4 book ai didi

typescript - 使用接口(interface)的所有可选字段创建子接口(interface)

转载 作者:行者123 更新时间:2023-12-04 07:32:19 24 4
gpt4 key购买 nike

我有一个包含一些可选字段的界面

interface Config {
name: string,
context?: string,
value?: number,
type: string
}
我想提取所有可选字段及其值
结果应如下所示:
type OptionalConfig = ExtractOptionalProperties<Config>

// {
// context?: string,
// value?: number,
// }
我找到了 extract all optional keys 的方法但不知道如何提取值。 typescript 可以吗?

最佳答案

您可以使用 mapped type为了那个原因:

type ExtractOptionalProperties<T extends object> = {
[key in OptionalPropertyOf<T>]: T[key];
}
T[key]是什么给你的属性(property)类型。
Playground Link
也可以 modify the modifiers ,尽管使用 OptionalPropertyOf从您链接的答案中,可选性已转换为具有 undefined 的联合.
你没有说你会,但是 如果 你想删除可选性,你可以使用 Exclude<T[key], undefined> :
type ExtractOptionalProperties<T extends object> = {
[key in OptionalPropertyOf<T>]: Exclude<T[key], undefined>;
}
结果, context将是 string而不是 string | undefined , 和 value将是 number而不是 number | undefined . ( Playground link ) 但同样,你并没有说你想这样做,只是想表明如果你愿意,你可以做更多的事情。

关于typescript - 使用接口(interface)的所有可选字段创建子接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67884334/

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