webpack - Typescript 4 nullish-tilordning (??=) fungerer ikke i nytt CRA-prosjekt
Typescript 4 støtter nullish-tilordning (??=). CRA 4 som ble utgitt i går sier at det støtter TS 4. Den operatoren fungerer i kodeeditoren, men når jeg kjører yarn start får jeg:
Module parse failed: Unexpected token (14:10)
File was processed with these loaders:
* ./node_modules/@pmmmwh/react-refresh-webpack-plugin/loader/index.js
* ./node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
For å gjenskape problemet oppretter jeg bare en ny app med CRA med Typescript-støtte. Deretter legger jeg bare til følgende linjer i App.tsx:
const test = { a: 1 };
test.a ??= 2;
Noen ideer? Jeg vet ikke mye om Babel/Webpack.
Svar #1
Jeg tok testen, og det føles som en feil/regresjon i CRA siden disse funksjonene har eksistert siden 2019 (nullish coalescing var fra TS 3.7 eller noe sånt). Samme feil oppstår med vanlig js (vanlig js skal også støtte operatorene). CRA v4 (hovedversjonen!) ble nettopp utgitt i går, så dette er ganske sannsynlig.
Mens dette blir fikset, kan du bare holde deg til CRA v3, siden det å fikse det manuelt kan være smertefullt.
Svar #2
Har du tilgang til filen webpack.config.js?
Vanligvis må du legge til en loader (som tslint-loader), en tsconfig-fil og en regel i webpack-konfigurasjonen for å la webpack transpile TS-koden til JS.
Hvis CRA ikke lar deg endre den filen uten å ejecte, må det finnes en måte du kan oppdatere loaderen til de nyeste TypeScript-spesifikasjonene på