【发布时间】:2021-09-16 07:24:01
【问题描述】:
给定一个具有可选属性的对象类型,例如:
interface Person {
name: string;
age: number;
friends?: Person[];
jobName?: string;
}
…我想删除它的所有可选属性,结果是:
interface Person {
name: string;
age: number;
}
我该怎么做?
请注意,我不能使用Omit<Person, "friends" | "jobName">,因为事先不知道实际属性。我必须以某种方式收集所有可选属性的键的联合:
type OptionalKey<Obj extends object> = {
[Key in keyof Obj]: /* ... */ ? Key : never;
}[keyof Obj];
type PersonOptionalKey = OptionalKey<Person>;
// "friends" | "jobName"
另外,typescript remove optional property 名字不好,没有回答我的问题。
【问题讨论】:
-
某事like this?
标签: typescript properties conditional-types