javascript - Miten konfiguroida TypeScript piilottamaan kaikki globaalit muuttujat ikkunasta (window), mutta silti päästä ikkunaan (window) käsiksi?


Kuinka konfiguroida TypeScript piilottamaan kaikki globaalit muuttujat ikkunasta, mutta pääsemään vain ikkunaan itseensä?

Esimerkki :

Tämä koodi toimii ilman ongelmia:

function foo(length: number): void {
  // Console result: A number from this scope.
  console.log(length);
}

mutta kun poistankin parametrin length. Linter on silti tyytyväinen. Koska length on globaali muuttuja window-oliosta. Katso dokumentaatio

function foo(): void {
  // Console result: A number from window. (not expected in this case)
  console.log(length);
}

Odotettu :

function foo(): void {
  // Console result: undefined (or my global variable if exist)
  // And in case the variable does not exist, the linter will cry as expected.
  console.log(length);
}

Haluan piilottaa ikkuna-alueen globaalilta pääsyltä. Mutta haluan silti päästä ikkunan objektiin itse, jos kutsun sitä eksplisiittisesti kuten:

function foo(): void {
  // This already works. But length itself without window as context should fail.
  console.log(window.length);
}

Onko olemassa tsconfig- tai tslint-asetusta?

Vastaus #1

Tarkista https://palantir.github.io/tslint/rules/no-restricted-globals/ tslint-versio >= 5.13.0