1. ホーム
  2. javascript

[解決済み] 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 は制約のない型パラメータです。