如何使用Create React App和TypeScript启用可选链接

时间:2019-11-28 17:08:24

标签: typescript babel create-react-app

  

目前尚不支持实验语法“ optionalChaining”   已启用

我遇到了以上错误。我遵循了此post,并将"@babel/plugin-proposal-optional-chaining": "^7.7.4"添加到了我的devDependencies中。

然后我收到此错误,

  

将@ babel / plugin-proposal-optional-chaining(https://git.io/vb4Sk)添加到   Babel配置的“插件”部分以启用转换。

所以我遵循了post,并将.babelrc文件添加到了项目的根目录中

{
    "presets": ["react", "es2015","stage-1"],
    "plugins": ["transform-runtime", "transform-optional-chaining"]
}

这似乎没有任何作用。我还听到有人提到Create React App不允许您修改babel的配置。所以我的问题是如何在不重新接线整个整个CRA的情况下启用可选链接

PS 。我正在使用"typescript": "^3.7.2",或者至少是我的package.json所说的。我尝试npm install以确保它已更新。不知道CRA是否在下面做一些奇怪的事情并以某种方式使用了TypeScript的旧版本。


编辑: 当我从CRA开始项目时,我相信我们正在使用TypeScript: 3.6.x。我想使用Optional Chaining,所以我将package.json文件更改为"typescript": "^3.7.2",然后是npm install。我认为问题是,TypeScript知道我正在使用3.7.2,但是CRA的配置仍然较旧,我不确定如何更新。

3 个答案:

答案 0 :(得分:6)

反应脚本3.3.0及更高版本支持它。无需安装react-scripts @ next。

只需将其放入package.json "react-scripts": "^3.3.0"中就可以了。

答案 1 :(得分:2)

Create-React-App使用babel转换TypeScript,因此它不使用npm安装的TypeScript版本。 @next版本的react-scripts支持TypeScript 3.7。您可以安装它并与以下对象一起使用:

  • yarn add react-scripts@next

    -或-

  • npm install -s react-scripts@next

答案 2 :(得分:0)

package.json

{
  "scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "test": "react-app-rewired test --env=jsdom"
  },
  "devDependencies": {
    "@babel/plugin-proposal-optional-chaining": "^7.2.0",
    "customize-cra": "^0.4.1",
    "react-app-rewired": "^2.1.3"
  }
  ...other
}

config-overrides.js

const { useBabelRc, override } = require('customize-cra');
module.exports = override(useBabelRc());

.babelrc

{
  "plugins": ["@babel/plugin-proposal-optional-chaining"]
}

detailed blogpost