「送信」という1つの関数があり、2つの許可されたシグネチャでオーバーロードされるTypeScriptインターフェイスがあります。オーバーロードされた関数を持つインターフェイスを実装する匿名オブジェクトの作成
export interface ConnectionContext {
send(data: ConnectionData): void;
send(data: ConnectionData, timeout: number): Promise<ConnectionData>;
}
私はこのインタフェースを実装する匿名のオブジェクトを作成しようとしています:
Error:(58, 15) TS2322:Type '{ send: (data: ConnectionData, timeout?: number | undefined) => void | Promise<ConnectionData>; }' is not assignable to type 'ConnectionContext'.
Types of property 'send' are incompatible.
:
const context: ConnectionContext = {
send: (data: ConnectionData, timeout?: number): void | Promise<ConnectionData> => {
//
}
};
しかし、活字体2.4.1は、次のエラーが発生して
Type '(data: ConnectionData, timeout?: number | undefined) => void | Promise<ConnectionData>' is not assignable to type '{ (data: ConnectionData): void; (data: ConnectionData, timeout: number): Promise<ConnectionData>; }'.
Type 'void | Promise<ConnectionData>' is not assignable to type 'Promise<ConnectionData>'.
Type 'void' is not assignable to type 'Promise<ConnectionData>'.
私はクラスでこれを行うことができます知っているが、1せずにこれを行うにはいくつかの方法がある場合、私はむしろ、全体のクラスを作成していないと思います。
私はこれに似た問題を抱えており、これに対する一般的な答えも興味があります。 – bcherny