我不断收到不相容以下错误:打字稿无效超载签名 - 与实施
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