我有一个函数,其联合类型介于string
和函数类型之间。如何编写一个类型保护来缩小到该函数类型? (以下不起作用。)
interface Callback {
(args: any[]): void
}
var fn = function(arg: string | Callback) {
if (typeof arg == 'Callback') {
arg.call([]);
}
}
答案 0 :(得分:2)
typeof
无法返回'Callback'
。在这种情况下,它可以进行instanceof Function
检查:
interface Callback {
(args: any[]): void
}
var fn = function(arg: string | Callback) {
if (arg instanceof Function) {
arg.call([]);
}
};
或者这也有效:
if (typeof arg === "function") {
arg.call([]);
}