TypeScriptで再帰的なPartial<T>を使う
2023-12-21 11:06:18
質問
このようなインターフェイスがあります。
export interface UserSettings
{
one: {
three: number;
four: number;
};
two: {
five: number;
six: number;
};
}
...そして、これをこうしたい。
export interface UserSettingsForUpdate
{
one?: {
three?: number;
four?: number;
};
two?: {
five?: number;
six?: number;
};
}
...しかし
Partial<UserSettings>
はこれを生成します。
{
one?: {
three: number;
four: number;
};
two?: {
five: number;
six: number;
};
}
マップされた型を使用して、すべての深さのすべてのプロパティをオプションにすることは可能ですか、それともそのために手動でインターフェースを作成する必要がありますか?
どのように解決するのですか?
2.8で条件付き型の上陸により、以下のように再帰的な部分型を宣言できるようになりました。
type RecursivePartial<T> = {
[P in keyof T]?:
T[P] extends (infer U)[] ? RecursivePartial<U>[] :
T[P] extends object ? RecursivePartial<T[P]> :
T[P];
};
参照
http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html
関連
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] TypeScriptでオブジェクトに動的にプロパティを割り当てるには?
-
[解決済み] タイプスクリプトのレコードタイプとは何ですか?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] tsconfig.jsonのtargetは何のためにあるのですか?
-
TypeScriptコンパイラにArray.prototype.filterが配列から特定の型を削除するように伝える方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Typescriptでインターフェースやクラスを使用する場合 [重複].
-
[解決済み] グローバルスコープの拡張は、外部モジュールまたはアンビエントモジュール宣言にのみ直接ネストすることができます(2669)
-
[解決済み] Angular2 canActivate() 非同期関数呼び出し
-
[解決済み] 型{ [key: string]: boolean; }は何を意味するのでしょうか?
-
[解決済み] プライベートセッターのタイプスクリプト?
-
[解決済み] ユーティリティクラスの構成方法
-
[解決済み] 型 'null' は型 'T' に割り当てられません。
-
[解決済み] Chrome Debugger拡張機能によるVisual Studio Codeでの "Unverified breakpoint "について
-
[解決済み] Typescript、"Object is possibly null" エラーをどのように渡すか?
-
Javascriptにおける値渡し、参照渡しについて