Миграция с JS, ошибки в сборке tsc - PullRequest
0 голосов
/ 23 января 2019

Я впервые пробую TypeScript и переношу существующую кодовую базу JavaScript.

Я следовал инструкциям руководства по миграции TS , но сразу столкнулся с проблемами сборки.

Главный блокировщик, который я ударил, - это то, что tsc жалуется на попытку скомпилировать файл .ts, который находится в моем каталоге node_modules.

Мой tsconfig.json:

{
  "compilerOptions": {
    "outDir": "./dist",
    "allowJs": true,
    "lib": ["esnext"],
    "target": "es5"
  },
  "include": ["./src/**/*"],
  "exclude": ["node_modules", "__tests__"]
}

Как видите, я пытался сказать tsc, чтобы он игнорировал каталог node_modules, но, похоже, он все еще там.

Это ошибка - хотя я не уверен, насколько она полезна:

node_modules/http-link-dataloader/dist/src/types.d.ts:14:22 - error TS2304: Cannot find name 'RequestInit'.

14     referrerPolicy?: RequestInit['referrerPolicy'];
                        ~~~~~~~~~~~

Любой совет?

1 Ответ

0 голосов
/ 23 января 2019

Вам может понадобиться "skipLibCheck": true в опциях компилятора.

Через: https://github.com/Microsoft/TypeScript/issues/14293

Редактировать: углубляясь в это, вам больше не нужно пропускать LibCheck. Проблема в том, что TS изучает определения для http-link-dataloader и не может найти RequestInit.

Глядя в файл определения для http-link-dataloader, он фактически не определяет тип для RequestInit:

https://github.com/prisma/http-link-dataloader/blob/master/src/types.ts

Дальнейшее копание привело меня к выводу, что RequestInit на самом деле является частью fetch. Соответствующий выпуск GitHub

Чтобы использовать типизацию для js на стороне клиента, например fetch, вам понадобится библиотека dom в машинописном тексте.

"lib": [
    "dom",
    ...
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...