2
TypeScriptを使用するEventEmitterライクなシステムに強く型付けされたイベントを追加しようとしています。TypeScriptとEventEmitterの型付きイベント
interface EventHandler<T extends TypedMsg<any, any> {
on: (messageType: T.messageType, handler: (T.message) => void) => void;
}
をしかし、活字体がT.messageType
のように抽出するサブタイプをサポートしていません:私はのようなインタフェースを定義したいと思います
interface TypedMsg<Name, T> {
messageType: Name;
message: T;
}
type TypedMsgFoo = TypedMsg<'FOO', string>;
type TypedMsgBar = TypedMsg<'BAR', number>;
type EitherFooOrBar = TypedMsgFoo | TypedMsgBar;
:
は現在、我々は次のように私たちのタイプを定義します。これを行う別の方法がありますか?
最終目標はただで適切なタイピングとハンドラを定義するために、次のようになります。
class FooBarHandler implements EventHandler<EitherFooOrBar> {
on(messageType: EitherFooOrBar.messageType) {...}
}