假设我有这样一种类型:
type T = {
a: number;
b: undefined;
};
由于b
属性的值未定义,我希望能够将{ a: 0 }
赋值给此类型的变量,如下所示:
const c: T = { a: 0 };
但这会导致错误Property 'b' is missing in type '{ a: number; }' but required in type 'T'.
。
是否有办法创建RemoveUndefinedValues
泛型,例如:
type T2 = RemoveUndefinedValues<T>; // T2 = { a: number }
和Omit<Type, Keys>
的工作方式差不多,但是用值代替键?
1条答案
按热度按时间xam8gpfp1#
如果你想删除键,我们有两种方法可以做:要么忽略未定义的键,要么只选择定义的键。
以下是这些工具的实用程序类型:
然后
Playground
如果您想使其可选,那么您可以使用上面的两个实用程序通过Map类型的交集来实现这一点:
额外的
extends infer O
是因为TS不会显示底层的结果类型,这迫使TS“简化”并完全扩展结果。Playground