我正在嘗試從一種物件型別中洗掉 undefined 。我所做的是:
type T = Exclude<{
foo: number | undefined;
flag?: boolean | undefined;
}, undefined>
但是T結果還是
type T = {
foo: number | undefined;
flag?: boolean | undefined;
}
為什么Exclude不作業?
抱歉,我忘了提到我仍然想保留可選型別。我更新了物件。假設我們有一個屬性是可選的,而另一個不是。所以我想要的結果是
type T = {
foo: number;
flag?: boolean;
}
uj5u.com熱心網友回復:
假設
type A = {
foo?: number | undefined;
flag?: boolean | undefined;
};
A不能接收undefined,否則它的定義會是
type UndefinableA = {
foo?: number | undefined;
flag?: boolean | undefined;
} | undefined;
因此,Exclude<A, undefined>andExclude<UndefinableA, undefined>都將回傳A,因為Exclude<T, U>不作用于屬性:
從 T 中排除那些可分配給 U 的型別
您可以回圈所有鍵并undefined從每個鍵中排除:
type OmitUndefined<T> = {[K in keyof T]: Exclude<T[K], undefined>};
然后
type T = OmitUndefined<A>;
將與
type T = {
foo: number;
flag?: boolean | undefined;
}
由于flag是可選的,因此您無法undefined從中洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377272.html
標籤:打字稿
上一篇:根據條件添加道具以反應組件?
