Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JS迁移,tsc构建中出现错误_Javascript_Typescript_Ecmascript 6_Migration - Fatal编程技术网

Javascript 从JS迁移,tsc构建中出现错误

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"

我第一次尝试TypeScript,并且正在迁移现有的JavaScript代码库

我已经按照TS上的说明进行了操作,但是马上就遇到了构建问题

我遇到的主要障碍是
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的一部分。我将用一些评论来修正我的答案。