javascript - Migrera från JS, fel i tsc-build
Jag provar TypeScript för första gången och håller på att migrera en befintlig JavaScript-kodbas.
Jag har följt anvisningarna på TS-migrationsguiden men stötte på byggproblem direkt.
Den största hindret jag stöter på är att tsc klagar på att försöka kompilera en .ts-fil som ligger i min node_modules-katalog.
Min tsconfig.json är:
{
"compilerOptions": {
"outDir": "./dist",
"allowJs": true,
"lib": ["esnext"],
"target": "es5"
},
"include": ["./src/**/*"],
"exclude": ["node_modules", "__tests__"]
}
Som du kan se har jag försökt att säga till tsc att ignorera node_modules-mappen, men det verkar som att den fortfarande går in där.
Det här är felet - även om jag inte är säker på hur hjälpsamt det är:
node_modules/http-link-dataloader/dist/src/types.d.ts:14:22 - error TS2304: Cannot find name 'RequestInit'.
14 referrerPolicy?: RequestInit['referrerPolicy'];
~~~~~~~~~~~
Några råd?
Svar #1
Du kan behöva en "skipLibCheck": true i kompilatoralternativ.
Via: https://github.com/Microsoft/TypeScript/issues/14293
Redigera: Om man gräver djupare i detta bör du egentligen inte behöva använda skipLibCheck. Problemet är att TS tittar på definitionerna för http-link-dataloader och kan inte hitta RequestInit.
När man tittar på definitionsfilen för http-link-dataloader definieras inte typen för RequestInit:
https://github.com/prisma/http-link-dataloader/blob/master/src/types.ts
Ytterligare grävande har lett mig till att upptäcka att RequestInit faktiskt är en del av fetch. Relevant GitHub-ärende
För att kunna använda typsättningar för klient-sida JS som fetch vill du använda dom-biblioteket i TypeScript.
"lib": [
"dom",
...
]
