假设我有一个具有如下功能的模块:
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'与所调用方法的所需类型(全局变量)不匹配。某种编译器配置选项是否可以实现?
答案 0 :(得分:1)
听起来好像您可能缺少noImplicitThis
编译器选项,该选项导致对this
的引用不在已知this
类型(例如类)的上下文中生成错误,而不是键入any
。您可能想打开strict
(包括noImplicitThis
和许多其他有用的选项),然后关闭不需要的strict
中的所有选项。< / p>