我有一个从 create-react-app 构建的应用程序。我现在想给它添加 typescript 。所以我遵循了这个指南:https://facebook.github.io/create-react-app/docs/adding-typescript
但我遇到了 2 个问题。首先,当我只想缓慢迁移并一次更改 1 个文件并让应用程序仍然编译时,它现在要求我更改整个项目中的负载。而不是一次大爆炸,这不可能吗?
其次,我收到此错误:在提供“--isolatedModules”标志时无法编译命名空间。 TS1208
但是当我将此 "isolatedModules": true,
更改为 false 并重新加载应用程序时,它会自动将其更改回 true,我不知道为什么?
最佳答案
我不确定您是否在命令行指定了编译器选项,但如果是这样,我建议您改为使用 tsconfig.json
文件。
Typescript 有一个选项 allowJs
这可能会有帮助(参见 https://www.typescriptlang.org/docs/handbook/compiler-options.html )。还要确保您没有启用 noImplicitAny
选项(默认情况下禁用)如果你不想写 .d.ts
每个 .js
的文件从 TypeScript 导入的文件——这意味着在没有 .d.ts
的情况下(类型定义)文件,导入的 JS 模块将具有类型 any
. (通常我会建议启用 noImplicitAny
但直到您完成代码迁移。)实际上,使用 allowJs
并在 .js
中保留一堆代码文件将比将所有文件重命名为 .ts
容易得多从头开始。虽然 TypeScript 确实是 JavaScript 的超集,但当您开始将带有类型注释的代码与没有类型注释的代码混合使用时,您很快就会开始出现类型错误(将 JS 模块导入为类型 any
是一个逃生 channel )。
巧合的是,我刚刚遇到了一个 TypeScript 的替代品,它声称拥有更完善的类型系统,并且与非类型化 JS 代码的互操作性更容易,但它仍处于开发人员预览阶段(并且还没有很多社区) ).我只读过一点关于它的内容,可能不会推荐它超过 TypeScript,主要是出于实际原因(至少这是我的初步印象),但它确实很有趣......如果你好奇,你可以在这里查看: https://www.onux.com/jspp/
关于javascript - 如何从 create-react-app 迁移到 typescript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917899/