簡體   English   中英

Typescript - 創建新類型,不包括“從不”類型的道具

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM