有一个实用程序类型NonNullable
,它将从联合类型中删除undefined
和null
值。但是我想知道是否有一种方法可以从类型中删除可选字段。
基本上,如果我有这样的类型:
type MyType = {
thingOne: number,
thingTwo?: number
};
我希望仅能在必填字段中创建类型
type MyRequireds = NonOptional<MyType>;
// which is a type only containing "thingOne"
是否有一些实用程序类可以满足组成的“ NonOptional”实用程序类?
一个棘手的解决方案:
type RequiredKeys<T> = {
[K in keyof T]: ({} extends { [P in K]: T[K] } ? never : K)
}[keyof T];
type NonOptional<T> = Pick<T, RequiredKeys<T>>;
type MyType = {
thingOne: number,
thingTwo?: number
};
type MyRequireds = NonOptional<MyType>;
诀窍在于{}
扩展{thingTwo?: number}
但不扩展{thingOne: number}
。我最初在这里找到此解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句