Ошибка машинописного текста: Rxjs вызывает setTimeout иначе, чем определено в @types /node

#node.js #typescript #rxjs

#node.js #машинопись #rxjs

Вопрос:

Время выполнения:

  • Узел v11.7.0
  • Версия RxJS: 6.3.3
  • @types/node: 8.10.45
  • tsc: 3.2.4

При запуске tsc я вижу, что где-то в Rxjs setTimeout вызывается без передачи ms параметра, и это противоречит @types/node определению setTimeout . Поскольку я обновился до последней версии Rxjs, я больше не могу создавать свой проект.

Есть ли обходной путь?

 node_modules/rxjs/src/internal/util/hostReportError.ts:7:3 - error TS2555: Expected at least 2 arguments, but got 1.

7   setTimeout(() => { throw err; });
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


node_modules/@types/node/index.d.ts:123:65
    123 declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
                                                                        ~~~~~~~~~~
    An argument for 'ms' was not provided.
  

Комментарии:

1. Это не столько обходной путь, просто обычная практика — никогда не компилировать исходные тексты внутри node_modules . В вашем проекте должны использоваться скомпилированные .js файлы и .d.ts файлы из его зависимостей, а не исходные .ts файлы.

2. Вау, это сбивает меня с толку прямо сейчас, потому что, насколько я знаю, я ничего не компилирую в node_modules . Я исключаю его из своего tsconfig.

Ответ №1:

Я решил эту проблему, добавив следующее в свой tsconfig.json :

   "lib": [
    "dom",
    "es2017"
  ]