第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從類型中排除屬性

從類型中排除屬性

慕斯709654 2019-10-17 10:35:05
我想從類型中排除單個(gè)屬性。我怎樣才能做到這一點(diǎn)?例如我有interface XYZ {  x: number;  y: number;  z: number;}我想排除財(cái)產(chǎn)z以獲得type XY = { x: number, y: number };
查看完整描述

3 回答

?
達(dá)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

適用于3.5以上的TypeScript版本

在TypeScript 3.5中,Omit類型已添加到標(biāo)準(zhǔn)庫(kù)中。請(qǐng)參閱以下示例以了解如何使用它。


對(duì)于3.5以下的TypeScript版本

在TypeScript 2.8中,該Exclude類型已添加到標(biāo)準(zhǔn)庫(kù)中,該標(biāo)準(zhǔn)庫(kù)允許將省略類型寫(xiě)為:


type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>

對(duì)于2.8以下的TypeScript版本

您不能Exclude在2.8以下的版本中使用該類型,但是可以使用它來(lái)替代它,以便使用與上述相同的定義。但是,此替換僅適用于字符串類型,因此其功能不如Exclude。


// Functionally the same as Exclude, but for strings only.

type Diff<T extends string, U extends string> = ({[P in T]: P } & {[P in U]: never } & { [x: string]: never })[T]

type Omit<T, K extends keyof T> = Pick<T, Diff<keyof T, K>>

并使用該類型的示例:


interface Test {

    a: string;

    b: number;

    c: boolean;

}


// Omit a single property:

type OmitA = Omit<Test, "a">; // Equivalent to: {b: number, c: boolean}


// Or, to omit multiple properties:

type OmitAB = Omit<Test, "a"|"b">; // Equivalent to: {c: boolean}


查看完整回答
反對(duì) 回復(fù) 2019-10-17
?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

使用打字稿2.8,您可以使用新的內(nèi)置Exclude類型。在2.8版本說(shuō)明實(shí)際上在節(jié)“預(yù)定義條件類型”提到這一點(diǎn):


注意:Exclude類型是此處建議的Diff類型的正確實(shí)現(xiàn)。[...]我們沒(méi)有包含Omit類型,因?yàn)樗男问胶芎?jiǎn)單Pick<T, Exclude<keyof T, K>>。


將此應(yīng)用于您的示例,XY類型可以定義為:


type XY = Pick<XYZ, Exclude<keyof XYZ, "z">>


查看完整回答
反對(duì) 回復(fù) 2019-10-17
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

我找到了聲明一些變量并使用傳播運(yùn)算符來(lái)推斷類型的解決方案:


interface XYZ {

  x: number;

  y: number;

  z: number;

}


declare var { z, ...xy }: XYZ;


type XY = typeof xy; // { x: number; y: number; }

它有效,但是我很高興看到更好的解決方案。


查看完整回答
反對(duì) 回復(fù) 2019-10-17
  • 3 回答
  • 0 關(guān)注
  • 1201 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)