型から 1 つのプロパティを除外したいのですが、どうすればよいですか?
例えば私は
interface XYZ {
x: number;
y: number;
z: number;
}
そして、私はプロパティを除外しz
たい
type XY = { x: number, y: number };
ベストアンサー1
TypeScript 3.5以上のバージョンの場合
TypeScript 3.5では、Omit
type が標準ライブラリに追加されました。使用方法については、以下の例を参照してください。
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}