interface F1 {
(a, b): any;
}
interface F2 {
(a): any;
}
type F3 = F1 | F2;
const f: F3 = (a) => {
console.log(123, a);
}
f(1) // Error
Я наткнулся на одну из загадочных проблем в TypeScript (3.1.4). Пока я звоню f()
, компилятор говорит Cannot invoke an expression whose type lacks a call signature. Type 'F3' has no compatible call signatures. [2349]
.
Это даже странно, так как весь вышеприведенный код работает до тех пор, пока f(1)
.
Я что-то здесь упускаю? Если таковые имеются, как я могу дать типизированную функцию union?
Я знаю, что могу сделать что-то подобное
interface T {
(a, b): any;
(a): any;
}
Но тогда я должен определить функцию таким образом
function (a, b?) {
}
который мне не очень нравится. Любая помощь / обратная связь будет оценена.