では型が一致しないのでcheckでエラーが発生します。 実際にはA<T>のTは使用していないのでA型として動いてくれます。いい感じですね!! とはいえ、これだけだとあまりおもしろさが分からないので、もう少しJSで使えそうな実用例で遊んでみます。 JSでの実用例(理想) JSでイベントを扱うときにイベント名に対して、コールバックで受け取る引数は大抵決まっています。 しかし、この手の型指定は大抵でイベント名をstring、コールバックをFunctionとして引数の型チェックをしないことが多いです。 これだとせっかく型を扱うのに静的にチェックできないとか意味がないよね・・・ということでPhantom Typeでイベント名に対応した引数をチェックできるようにします。 type Event = { type: string; }; type EventType<T> = "Event"; class