如何检查功能是否存在?

时间:2019-02-24 22:28:08

标签: typescript

我正在将一些旧的Javascript更新为Typescript。在Javascript中,您可以执行以下[ref]

if (typeof functionName === "function") { 
    // safe to use the function
    functionName();
}

在Typescript中,这给出了语法错误“找不到名称'updateRadarCharts'”

我可以通过声明语句解决问题

declare var functionName: Function;

但是,这并不是一个干净的解决方案,因为有可能不会声明它(因此进行检查)。在TS中,有没有更干净的方法可以做到这一点?

2 个答案:

答案 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;
}