[解決済み】タイプからプロパティを除外する
2022-03-29 20:36:47
質問
ある一つのプロパティを型から除外したいのですが、どうすればいいですか?どうすればよいですか?
例えば、私は
interface XYZ {
x: number;
y: number;
z: number;
}
そして、プロパティを除外したい
z
を取得するために
type XY = { x: number, y: number };
解決方法は?
TypeScriptのバージョンが3.5以上の場合
TypeScript 3.5では
Omit
型が標準ライブラリに追加されました。使い方は以下の例を参照してください。
TypeScript 3.5未満のバージョンの場合
TypeScript 2.8では
Exclude
という型が標準ライブラリに追加され、省略型を簡単に書くことができるようになりました。
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
TypeScript 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}
関連
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] TypeScriptで配列の項目を削除するには?
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み] Typescript オブジェクトのインデックス付きメンバの型を強制する?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み] Typescript によるインターフェース型チェック
-
[解決済み] TypeScriptでインターフェースファイルの定義に基づいたオブジェクトを作成するには?
-
[解決済み】Typescript d.ts ファイルで定義されたインターフェースプロパティタイプのオーバーライド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「TS2532: Object is possibly 'undefined'」というエラーを解決するにはどうしたらいいですか?
-
[解決済み] TypeScriptの円形型参照
-
[解決済み] サービスにDocumentを挿入する方法は?
-
[解決済み] TypeScriptのsetTimeoutはどのような戻り値型を使用すればよいですか?
-
[解決済み] エラー TS2345: 型 'T' の引数は型 'object' のパラメータに代入できません。
-
[解決済み] types/* を `dependencies` と `devDependencies` のどちらに入れるかは、どのように決めたらよいですか?
-
[解決済み】TypeScriptの "not assignable to parameter of type never "エラーとは?
-
[解決済み】「エラー TS2533: オブジェクトは 'null' または 'undefined' の可能性があります」を抑制する方法とは?
-
[解決済み】Typescript d.ts ファイルで定義されたインターフェースプロパティタイプのオーバーライド
-
[解決済み] typescript インターフェースは、次の2つのプロパティのうちどちらかが存在する必要があります。