Настройте VSCode / tscheck для целевого окружения браузера (setTimeout против window.setTimeout) - PullRequest
0 голосов
/ 04 мая 2020

Я пишу код, который хочу запустить в браузере.

/** @type {number} */
const nodeHandle = setTimeout(() => console.log("node"), 100); // ERROR: Type 'Timeout' is not assignable to type 'number'.

/** @type {number} */
const browserHandle = window.setTimeout(() => console.log("browser"), 100);

VS Код подразумевает, что setTimeout является функцией NodeJS (определение в node_modules/@type/node/globals.d.ts).

Проект также требует узла для инструментов сборки. (поэтому я не могу удалить его).

Я пытался:

  1. Установка {"exclude": ["node_modules"]} в tsconfig. json и в jsconfig. json
  2. Установка {"compilerOptions":{"lib": ["DOM","ESNext","DOM.Iterable"]}} в tsconfig. json и в jsconfig. json

Должен быть простой способ сообщить tscheck, что он игнорирует типизацию узлов, или лучше установить среду для браузера.

(Примечание: VS Code предлагает и разрешает функции браузера, такие как performance.mark et c. Хотя они не доступны в узле. Также должно быть возможно установить окружение для узла.)

...