簡體   English   中英

Typescript 2.8:從一種類型中刪除另一種類型的屬性

[英]Typescript 2.8: Remove properties in one type from another

在更新日志2.8中 ,他們有條件類型的這個例子:

type Diff<T, U> = T extends U ? never : T;  // Remove types from T that are assignable to U
type T30 = Diff<"a" | "b" | "c" | "d", "a" | "c" | "f">;  // "b" | "d"

除了刪除對象的屬性之外,我想這樣做。 我怎樣才能實現以下目標:

type ObjectDiff<T, U> = /* ...pls help... */;

type A = { one: string; two: number; three: Date; };
type Stuff = { three: Date; };

type AWithoutStuff = ObjectDiff<A, Stuff>; // { one: string; two: number; }

好吧,利用前面的Diff類型(順便說一下,它與現在屬於標准庫的Exclude類型相同),你可以寫:

type ObjectDiff<T, U> = Pick<T, Diff<keyof T, keyof U>>;
type AWithoutStuff = ObjectDiff<A, Stuff>; // inferred as { one: string; two: number; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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