从JS迁移,TSC构建中的错误

时间:2019-01-23 09:37:37

标签: javascript typescript ecmascript-6 migration

我是第一次尝试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'];
                        ~~~~~~~~~~~

有什么建议吗?

1 个答案:

答案 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",
    ...
]