首页 > 解决方案 > 打字稿:不允许隐式引用全局变量

问题描述

我最近在使用 TS 时遇到了这个问题,可能会意外访问全局变量(例如窗口属性)。

考虑这个例子:

a.ts

// a.ts
export const postMessage  = (message: string) => console.log(message);

b.ts

// Forget to import, but use libs: dom... so it compliles perfectly
// import { postMessage } from './a';

postMessage('hello'); // Oooops

看来,tslint 不能也无意处理这个案子。说,TS处理它。但可能是TS没有...

IMO,期望的行为是禁止隐式访问全局变量(全局/窗口属性)

postMessage() // Error
window.postMessage() // OK

它认为这是 eslint no-undef规则所做的。

TS repo 中似乎有一个未解决的问题,但它非常陈旧(Microsoft/TypeScript#14306

如果您知道任何解决此问题的食谱/信息,请分享。或者也许我忘记了一些东西,而且很容易修复(因此,愚蠢的问题)

标签: typescriptlinttslint

解决方案


推荐阅读