[英]Typescript - Create new type excluding props of “never” type
在 Typescript v4.x 中,我試圖從另一種類型(類/接口)創建一個新類型,其中所有never
類型的道具都被排除在新類型中。
例如,給定一個接口:
interface A { propNever: never; propAnother: string; }
我想生成一個新的派生類型,其中排除了propNever
道具:
type B = { propAnother: string; };
到目前為止,我已經嘗試了以下方法:
type OmitNeverProps<T> = Pick<T, ({[P in keyof T]: T[P] extends never ? never : P })[keyof T]>;
但沒有運氣 - 我的 Typescript 檢查表明 propNever: never; 仍然是type B
。
如果有辦法排除never
類型的道具,有什么想法嗎?
這對我有用。
TS 4.1.2
interface A { funcNever(): never; propNever: never; propAnother: string; }
type OmitNeverProps<T> = { [K in keyof T as T[K] extends never | ((...arg:any) => never) ? never : K]: T[K] }
type B = OmitNeverProps<A>;
//type B = {
// propAnother: string;
//}
TS 4.0.5
type OmitNeverProps<T> = Pick<T, ({[P in keyof T]: T[P] extends never | ((...arg:any) => never) ? never : P })[keyof T]>;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.