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

如何使用Create React App和TypeScript启用可选链接,typescript,babeljs,create-react-app,Typescript,Babeljs,Create React App,目前不支持实验语法“optionalChaining” 启用 我得到了上面的错误。我遵循这一点,在我的设计依赖项中添加了“@babel/plugin建议可选链接”:“^7.7.4” 然后我得到了这个错误 将@babel/插件提案可选链接()添加到 Babel配置的“插件”部分启用转换 因此,我遵循这一点,将.babelrc文件添加到项目的根目录中 { "presets": ["react", "es2015","stage-1"], "plugins": ["transform-

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

我得到了上面的错误。我遵循这一点,在我的
设计依赖项中添加了
“@babel/plugin建议可选链接”:“^7.7.4”

然后我得到了这个错误

将@babel/插件提案可选链接()添加到 Babel配置的“插件”部分启用转换

因此,我遵循这一点,将
.babelrc
文件添加到项目的根目录中

{
    "presets": ["react", "es2015","stage-1"],
    "plugins": ["transform-runtime", "transform-optional-chaining"]
}
这似乎没有任何作用。我还听到有人提到,
Create React App
不允许您修改巴贝尔的配置。因此,我的问题是如何在不重新连接整个
CRA
的情况下启用可选链接

p.S.我正在使用
的“typescript”:“^3.7.2”
,或者至少我的
包.json
是这么说的。我尝试了
npm安装
,以确保它得到更新。不确定
CRA
是否在下面做了一些奇怪的事情,并不知何故使用了较旧版本的
TypeScript


编辑:
当我使用
CRA
启动项目时,我相信我们使用的是
TypeScript:3.6.x
。我想使用
可选链接
,所以我将我的
包.json
文件更改为
“typescript”:“^3.7.2”
,然后
npm安装
。我想问题是,
TypeScript
知道我正在使用
3.7.2
,但是
CRA
仍然有较旧的配置,我不确定如何更新。创建React应用程序使用babel传输TypeScript,因此它不使用您的npm安装版本的TypeScript。react脚本的3.3.0版支持TypeScript 3.7。您可以将其安装并与以下设备一起使用:

  • 纱线添加反应-scripts@3.3.0

    -或-

  • npm安装-s react-scripts@3.3.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
      }
      

      配置覆盖.js

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

      .babelrc

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

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


      只要放入package.json
      “react scripts”:“^3.3.0”
      ,它就会工作。

      您可以使用。可选链接现在是本机支持的功能。我使用的是TypeScript
      ^3.7.2
      。或者至少我的
      package.json
      就是这么说的。我也尝试过npm安装。我在OP中提到过,我不想重新连接整件事
      “那么我的问题是如何在不重新连接整个CRA的情况下启用可选链接?”
      如果我已经在使用
      自定义CRA
      来覆盖配置,如何使用它?例如:
      module.exports=function override(config){config.resolve.modules=[path.resolve(u dirname,'src'),'node_modules'];return config;}嗯,我不再与我为之进行react应用程序配置的公司合作。所以我不能很容易地测试这个。但很高兴知道。这可能会对未来的读者有所帮助。现在我回头看,这和@LukeP建议的是一样的lol@HafizTemuri卢克更新了他的答案。他的回答一开始是反应-scripts@nextCan您在
      react scripts 3.3.0
      上使用可选链接而不使用TS?否-可选链接是一种类型脚本功能,需要传输到JavaScript才能在浏览器或NodeJS中工作。@Badrush可选链接是TS功能,没有TS您如何使用它?就像我说的,我能不能只吃蛋黄而不打碎鸡蛋。答案很简单:不!但希望他们能尽快将其添加到vanilla JS中。