Javascript 从JS迁移,tsc构建中出现错误
我第一次尝试TypeScript,并且正在迁移现有的JavaScript代码库 我已经按照TS上的说明进行了操作,但是马上就遇到了构建问题 我遇到的主要障碍是Javascript 从JS迁移,tsc构建中出现错误,javascript,typescript,ecmascript-6,migration,Javascript,Typescript,Ecmascript 6,Migration,我第一次尝试TypeScript,并且正在迁移现有的JavaScript代码库 我已经按照TS上的说明进行了操作,但是马上就遇到了构建问题 我遇到的主要障碍是tsc抱怨试图编译.ts文件,该文件位于我的node\u modules目录中 我的tsconfig.json是: { "compilerOptions": { "outDir": "./dist", "allowJs": true, "lib": ["esnext"], "target": "es5"
tsc
抱怨试图编译.ts
文件,该文件位于我的node\u modules
目录中
我的tsconfig.json
是:
{
"compilerOptions": {
"outDir": "./dist",
"allowJs": true,
"lib": ["esnext"],
"target": "es5"
},
"include": ["./src/**/*"],
"exclude": ["node_modules", "__tests__"]
}
如您所见,我试图告诉tsc
忽略node\u modules
目录,但它看起来仍然在那里
这就是错误所在-尽管我不确定它有多大帮助:
node_modules/http-link-dataloader/dist/src/types.d.ts:14:22 - error TS2304: Cannot find name 'RequestInit'.
14 referrerPolicy?: RequestInit['referrerPolicy'];
~~~~~~~~~~~
有什么建议吗?您可能需要编译器选项中的“skipLibCheck”:true
通过:
编辑:深入研究这个问题,你不应该真的需要skipLibCheck。问题是TS正在查找http链接数据加载器的定义,但找不到RequestInit
查看http链接数据加载器的定义文件,它实际上没有定义RequestInit的类型:
进一步挖掘使我发现RequestInit实际上是fetch的一部分
为了使用客户端js(如fetch)的打字,您需要使用typescript中的dom库
"lib": [
"dom",
...
]
这就成功了。文档说,
skipLibCheck
是“跳过所有声明文件(*.d.ts)的类型检查”-这对我的项目实际意味着什么?我是否遗漏了某些内容,或者我是否有丢失重要内容的风险?skipLibCheck将阻止typescript进入库并验证它在库中使用的类型是否与所说的导出类型匹配。深入研究这一点,尽管看起来RequestInit实际上是一种更新的类型,它被定义为fetch的一部分。我将用一些评论来修正我的答案。