我不斷收到不相容以下錯誤:打字稿無效超載簽名 - 與實施
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;
我看不出有什麼不對的功能型重載以上。我試圖逐個刪除函數簽名(並根據類型),但我失敗了 - 我實現了一個空函數。
codeis的邏輯很好(所有測試都通過),只是重載無效。
這個問題與this one。
@CoreyAlix所以我應該怎麼解決呢? – ducin