[解決済み] Typescriptで型の拡張は可能か?
2022-03-26 02:02:50
質問
以下のような型があるとします。
type Event = {
name: string;
dateCreated: string;
type: string;
}
今度はこの型を拡張したい、つまり
type UserEvent extends Event = {
UserId: string;
}
これではうまくいきません。どうすればいいのでしょうか?
解決方法は?
キーワード
extends
は、インターフェースとクラスのみに使用できます。
追加のプロパティを持つ型を宣言したいだけなら 交差点タイプ :
type UserEvent = Event & {UserId: string}
アップデイト をTypeScript 2.2用に変更しました。 を拡張するインターフェイスを持つことができるようになりました。 その型がいくつかの制限を満たしている場合。
type Event = {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
その逆はうまくいきません。
UserEvent
はインターフェイスとして宣言されなければなりません。
type
を使いたい場合は
extends
の構文があります。
そして、やはり不可能なのが
extend
を任意の型に変換することができます。
- 例えば、次のような場合は動作しません。
Event
は制約のない型パラメータです。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
jQueryのコピーオブジェクトの説明
-
vueディレクティブv-bindの使用と注意点
-
vueの補間表現とv-textディレクティブの違いについて
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方