タイプからプロパティを除外する 質問する

タイプからプロパティを除外する 質問する

型から 1 つのプロパティを除外したいのですが、どうすればよいですか?

例えば私は

interface XYZ {
  x: number;
  y: number;
  z: number;
}

そして、私はプロパティを除外しzたい

type XY = { x: number, y: number };

ベストアンサー1

TypeScript 3.5以上のバージョンの場合

TypeScript 3.5では、Omittype が標準ライブラリに追加されました。使用方法については、以下の例を参照してください。

TypeScript 3.5以下のバージョンの場合

TypeScript 2.8 では、このExclude型が標準ライブラリに追加され、省略型を次のように簡単に記述できるようになりました。

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

TypeScript 2.8以下のバージョンの場合

2.8 より前のバージョンでは 型は使用できませんExcludeが、上記と同じ種類の定義を使用するために、 の代替を作成することはできます。ただし、この代替は文字列型に対してのみ機能するため、 ほど強力ではありません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}

おすすめ記事