我正在将一些旧的Javascript更新为Typescript。在Javascript中,您可以执行以下[ref]:
if (typeof functionName === "function") {
// safe to use the function
functionName();
}
在Typescript中,这给出了语法错误“找不到名称'updateRadarCharts'”
我可以通过声明语句解决问题
declare var functionName: Function;
但是,这并不是一个干净的解决方案,因为有可能不会声明它(因此进行检查)。在TS中,有没有更干净的方法可以做到这一点?
答案 0 :(得分:4)
您可以将函数声明为:
declare var functionName: Function | undefined;
答案 1 :(得分:1)
对于全局扩充(这似乎是您要实现的目标),用户定义的类型防护通常效果很好:
interface AugmentedGlobal {
something: SomeType;
}
function isAugmented(obj: any): obj is AugmentedGlobal {
return 'something' in obj;
}
if (isAugmented(global/**or window*/)) {
const myStuff = global.something;
}