[解決済み] TypeScriptで単一のプロパティをオプションにする
2022-12-16 07:34:27
質問
TypeScriptでは、2.2...
Person型があるとします。
interface Person {
name: string;
hometown: string;
nickname: string;
}
そして、Personを返すが、ニックネームを必要としない関数を作りたいと思います。
function makePerson(input: ???): Person {
return {...input, nickname: input.nickname || input.name};
}
の型はどうすればよいのでしょうか?
input
? と同じ型を指定する動的な方法を探しています。
Person
ただし
nickname
は省略可能です (
nickname?: string | undefined
). 今のところ、一番近いのはこれです。
type MakePersonInput = Partial<Person> & {
name: string;
hometown: string;
}
という型をすべて指定しなければならないので、私が求めているものとはちょっと違います。 必須 を指定しなければならないからです。
どのように解決するのですか?
このように、一部のキーだけをパーシャルにすることもできます。
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
interface Person {
name: string;
hometown: string;
nickname: string;
}
type MakePersonInput = PartialBy<Person, 'nickname'>
関連
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] formGroup' は 'form' の既知のプロパティではないため、バインドできません。
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] Visual Studio コード自動インポート
-
[解決済み] エラー Typescript Feature 1.5。現在の言語レベルは1.4です。
最新
-
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のエラー「The operand of a 'delete' operator must be optional」の背後にある論理は何ですか?
-
[解決済み] TypeScriptの予約語 "type "とは何ですか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] タイプスクリプト。カスタムタイプに対する typeof のチェック
-
[解決済み] ngForとAsync Pipe Angular 2でObservableオブジェクトから配列を利用する。
-
[解決済み] typescriptでmoment.jsをインポートするには?
-
[解決済み] tsconfigの "target "と "module "を理解する。
-
[解決済み] TypeScriptで強く型付けされた配列の作成
-
[解決済み] 2つのインターフェイスを統合する
-
[解決済み] Typescriptで<T>は何を意味するのですか?