首页 > 解决方案 > 获取 TypeScript 以捕获“this”类型不匹配错误?

问题描述

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

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”与被调用的方法所需的类型(全局)不匹配。使用某种编译器配置选项可能吗?

标签: typescript

解决方案


听起来您可能缺少noImplicitThis编译器选项,这会导致对this不在已知this类型(例如类)的上下文中的引用生成错误而不是 type any。您可能想要打开strict(其中包括noImplicitThis许多其他有用的选项),然后关闭strict您不想要的任何选项。


推荐阅读