と互換性がない、私は次のエラー取得維持:次のコードのために活字無効な過負荷署名 - 実装
error TS2394: Overload signature is not compatible with function implementation.
を:
import Registry = require('../class/Registry');
type Format = Function;
type FormatRegistry = {
[s: string]: Format;
}
var registry = new Registry<Format>();
function formatAPI(): FormatRegistry; // get all formats // HERE GOES THE COMPILER ERROR
function formatAPI(name: string): Format; // get format
function formatAPI(name: string, format: Format): void; // register format
function formatAPI(formatMap: FormatRegistry): void; // register many formats
function formatAPI(nameOrMap?: string|FormatRegistry, callback?: Format): FormatRegistry|Format|void {
if (typeof nameOrMap === 'object') {
registry.registerMany(nameOrMap);
} else if (typeof nameOrMap === 'string') {
if (callback) {
registry.register(nameOrMap, callback);
} else {
return registry.get(nameOrMap);
}
} else {
return registry.list();
}
}
export = formatAPI;
を私は上記のオーバーロード関数型で間違っているものを見ることができません。私は関数シグネチャ(とタイプに応じて)を1つずつ削除しようとしましたが、失敗しました - 空の関数を達成しました。
コードの背後にあるロジックは問題ありません(すべてのテストに合格します)、オーバーロードは何とか無効です。
この質問は、this oneに関連しています。
@CoreyAlixので、どのように私はそれを修正する必要がありますか? – ducin