几个月前,我开始了一个使用create-react-app的react项目,我对将项目从Javascript迁移到Typescript很感兴趣。
我看到有一种方法可以使用标志创建带有typescript的react应用程序:
--scripts-version=react-scripts-ts
但是我没有找到任何解释,说明我如何将一个现有的JS项目迁移到TS。我需要逐步完成,这样我就可以同时处理.js和.ts文件,这样我就可以随着时间的推移进行转换。有人有过这种迁移的经验吗?要完成这种迁移,需要完成哪些步骤?
5条答案
按热度按时间wwwo4jvm1#
**UPDATE:**create-react-app 2.1.0版支持typescript,因此对于那些从头开始的人来说,可以使用它来创建带有typescript的新应用程序,根据documentation,应该使用以下命令来完成:
对于现有项目,在更新到2.1.0版后,使用以下命令将以下包添加到项目得依赖关系中:
然后只需将.js文件重命名为.ts文件即可。
我找到了一个将create-react-app从javascript迁移到typescript的解决方案,这样就不需要弹出了。
1.通过运行命令
create-react-app --scripts-version=react-scripts-ts
(注意-需要全局安装create-react-app
),使用typescript创建一个临时react项目1.在您自己的项目中-在
package.json
文件下删除react-scripts
1.通过运行命令
yarn add react-scripts-ts
将react-scripts-ts
添加到您的项目中,或者如果您使用的是npm,则使用npm install react-scripts-ts
。或者,将"react-scripts-ts": "2.8.0"
添加到package.json中。1.从您在步骤1中创建的项目中复制以下文件:
tsconfig.json, tsconfig.test.json tslint.json
到您自己的项目1.在您自己的项目下,在
package.json
中的scripts部分下,将react-scripts
示例更改为react-scripts-ts
(应该位于start
、build
、test
和eject
下1.通过使用Yarn或npm安装以下模块来安装react的类型:
@types/node
、@types/react
和@types/react-dom
。如果使用package.json,则放入devDependencies
部分。1.将
index.js
文件名更改为index.tsx
1.在tsconfig.json文件中添加以下配置:
"allowSyntheticDefaultImports": true
至for more info注意步骤7可能需要额外的修改,具体取决于index.js文件中的内容(如果它依赖于项目中的JS模块)。
现在您可以运行您的项目,它可能会工作,对于那些您正在得到的错误,包含
You may need an appropriate loader to handle this file type
有关.js文件,这是因为babel不知道如何从.tsx文件加载.js文件。我们需要做的是改变项目配置。我发现不运行eject
的方法是使用react-app-rewired包。这个包可以让你配置外部配置,这些外部配置将被添加/覆盖默认的项目设置。我们要做的是使用babel来加载这些类型的文件。让我们继续:1.使用Yarn或npm安装包
react-app-rewired
1.在根文件夹(
package.json
所在的位置)中,创建一个名为config-overrides.js
的新文件1.将此代码放入
config-overrides
文件:编辑package.json,使
start/start-js
、build
、test
和eject
脚本使用react-app-rewired,如项目自述文件中所示。例如"test": "react-app-rewired test --scripts-version react-scripts-ts --env=jsdom"
。现在你可以开始你的项目和问题应该得到解决。你可能需要额外的修改取决于你的项目(额外的类型等)。
希望能有所帮助
正如评论中所建议的,可以定义:
"compilerOptions": { "allowJs": true}
,这样你就可以混合JS和TS,而不用react-app-rewired。谢谢你提到这一点!whhtz7ly2#
现在就创建React应用v2.1.0 was released today with TypeScript support。这意味着您不再需要弹出或使用
react-scripts-ts
fork; all you need to do如果您有一个现有的Create React App项目,则安装所需的包:然后,只需将
.js
文件重命名为.ts
文件,即可开始使用TypeScript。(If您有一个使用create-react-app-typescript分支的现有应用程序,下面是关于how to port it to regular Create React App的教程。)
ruoxqz4g3#
为此,您需要弹出配置。
弹出后,您需要执行以下步骤:
1.将打字脚本扩展名
tsx
和ts
添加到Webpack配置(开发和生产)中的extensions
表。1.添加ts-loader。下面是一个示例
1.将eslint更改为tslint
1.添加source-map-loader以获得调试Typescript文件的可能性。
1.创建Typescript配置文件,并记住将
allowJs
设置为true。avwztpqn4#
1).运行
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
或
yarn add typescript @types/node @types/react @types/react-dom @types/jest
2).将任何文件重命名为TypeScript文件(例如,将src/index.js重命名为src/index.tsx)
3).运行
npm i @types/react-dom @types/react-redux @types/react-router-dom
4).重新启动开发服务器!
享受:)
kuuvgm7e5#
1).运行
或
2).添加tsconfig.json
运行
npx tsc --init
3).将其添加到tsconfig
现在,您可以将
tsx
集成到现有项目中😊