我是第一次尝试TypeScript,并正在迁移现有的JavaScript代码库。
我遵循了TS migration guide上的指示,但是立即遇到了构建问题。
我遇到的主要障碍是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'];
~~~~~~~~~~~
有什么建议吗?
答案 0 :(得分:3)
您可能需要在编译器选项中使用"skipLibCheck": true
。
通过:https://github.com/Microsoft/TypeScript/issues/14293
编辑:深入研究这一点,您实际上并不需要skipLibCheck。问题是TS正在调查http-link-dataloader的定义,但找不到RequestInit。
查看http-link-dataloader的定义文件时,实际上并没有定义RequestInit的类型:
https://github.com/prisma/http-link-dataloader/blob/master/src/types.ts
进一步的挖掘使我发现RequestInit实际上是获取的一部分。 Relevant GitHub Issue
为了像fetch一样在客户端js中使用类型输入,您需要在typescript中使用 dom 库。
"lib": [
"dom",
...
]