获取TypeScript来捕获“此”类型的不匹配错误?

时间:2018-10-02 21:20:58

标签: typescript

假设我有一个具有如下功能的模块:

export module Network
{
    export function savePrefs( globals:Globals )
    {
       // [save globals.prefs to the database...]
    }
}

最初,我有调用它的代码是Globals类的一部分,因此它使用以下方法调用上述方法:

Network.savePrefs(this);

因为它是Globals类中的实例方法,所以'this'变量引用了Globals实例。但是后来我决定将该方法移至模块,而忘记更改“ this”:

export module Utils
{
    upgradePrefs(globals:Globals)
    {
        // [... upgrade stuff....] //
        Network.savePrefs(this); // OOPS!
    }
}

TypeScript不会为此生成错误。

我想让TypeScript在发生这种情况时给我一个错误,因为'this'与所调用方法的所需类型(全局变量)不匹配。某种编译器配置选项是否可以实现?

1 个答案:

答案 0 :(得分:1)

听起来好像您可能缺少noImplicitThis编译器选项,该选项导致对this的引用不在已知this类型(例如类)的上下文中生成错误,而不是键入any。您可能想打开strict(包括noImplicitThis和许多其他有用的选项),然后关闭不需要的strict中的所有选项。< / p>