Create React AppとTypeScriptを使用してオプションのチェーンを有効にする方法


14

実験的な構文 'optionalChaining'のサポートは現在有効になっていません

上記のエラーが発生しました。この投稿をフォロー"@babel/plugin-proposal-optional-chaining": "^7.7.4"してに追加しましたdevDependencies

次に、このエラーが発生します、

@ babel / plugin-proposal-optional-chaining(https://git.io/vb4Sk)をBabel設定の 'plugins'セクションに追加して、変換を有効にします。

だから私はこの投稿をフォロー.babelrcし、プロジェクトのルートにファイルを追加しました

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

これは何もしなかったようです。また、誰かがCreate React Appバベルの設定を変更できないと言っている人もいました。だから私の質問は、全体を再配線せずにオプションのチェーンを有効にするにはどうすればよい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それでも古い設定があり、それをどのように更新できるかわかりません。


typescript 3.7を使用できます。オプションの連鎖は、ネイティブでサポートされる機能になりました。
Nicolas

TypeScriptを使用してい^3.7.2ます。または少なくともそれpackage.jsonは私の言うことです。私も試しnpm installました。
Hafiz Temuri

回答:


15

Create-React-Appは、babelを使用してTypeScriptをトランスパイルするため、npmがインストールされているバージョンのTypeScriptを使用しません。react-scriptsのバージョン3.3.0はTypeScript 3.7をサポートしています。あなたはそれをインストールして、それを以下で使うことができます:

  • yarn add react-scripts@3.3.0

    -または-

  • npm install -s react-scripts@3.3.0


ありがとう、ここで正しい解決策。
Ramon Gonzalez

1
react-scripts 3.3.0TSを使用せずにオプションのチェーンを使用できますか?
Badrush

いいえ-オプションのチェーンはTypeScriptの機能であり、ブラウザーまたはNodeJSで機能するためにJavaScriptに変換する必要があります。
LukeP

@BadrushオプションチェーンはTS機能ですが、TSなしでどのように使用できますか?私が言っているように、卵を壊さずに卵黄を食べることができますか?簡単な答えはノーです!しかし、すぐにバニラJSに追加されることを期待しましょう。
Hafiz Temuri

6

Reactスクリプト3.3.0以降でサポートされています。react-scripts @ nextをインストールする必要はありません。

package.jsonに入れるだけで"react-scripts": "^3.3.0"動作します。


1
まあ、私はリアクションアプリの設定をしていた会社とはもう仕事をしていません。だから私は本当にこれを簡単にテストすることはできません。しかし、知っておくと良い。これは将来の読者にとって役立つかもしれません。
Hafiz Temuri

今振り返ってみると、@ LukePが提案したlolと同じです
Hafiz Temuri

@HafizTemuri lukeが回答を更新しました。彼の答えは、最初はreact-scripts @ next
でした

2

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"]
}

詳細なブログ投稿


OPでは、全体を再配線したくないと述べました。"So my question is how can I enable optional chaining without re-wiring the whole CRA?"
Hafiz Temuri

customize-craすでにそれを使用して構成をオーバーライドしている場合、どのように使用しますか?例:module.exports = function override(config) { config.resolve.modules = [path.resolve(__dirname, 'src'), 'node_modules']; return config; };
Subhendu Kundu '12
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.