Машинопись: Запретить неявную ссылку на глобальные переменные - PullRequest
0 голосов
/ 08 июня 2018

Я недавно столкнулся с этой проблемой, используя 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 существует открытая проблема, но она довольно устаревшая ( Microsoft / TypeScript # 14306 )

Если вы знаете какой-либо рецепт / информацию, чтобы исправить это, пожалуйста, поделитесь.Или, может быть, я что-то забыл, и это довольно легко исправить (отсюда и глупый вопрос)

...