Как использовать синтаксис «??=» в Typescript

#typescript

#typescript

Вопрос:

 let a;
a ??= 'asd'
console.log(a); // asd
 

Когда я запускаю вышеупомянутый js в консоли браузера без каких-либо проблем

Однако при запуске в typescript возникает ошибка

 SyntaxError: Unexpected token '??='
 

Это моя конфигурация:

     "typescript": "^4.1.3",
    "webpack": "^5.11.0",
    "webpack-cli": "^4.2.0"
 
     "target": "ESNext",
    "module": "ESNext",
 

Я хочу использовать «??=», нужно настроить webpack или tsconfig, спасибо

Комментарии:

1. Вы уверены, что ваша установка TS является актуальной? Может быть, переустановить ваши node_modules?

2. Не уверен, как вы запускали свой код?

3. Кроме того, что вы используете для компиляции ваших TS? Если вы используете webpack, возможно, вы используете Babel для компиляции. Не уверен, что поддерживает последняя версия Babel, но вам, возможно, тоже нужно это проверить.

4. Проблема не в TS 4.1.3; Я не могу воспроизвести вашу проблему … так что это связано с вашей конкретной средой.

5. Я использую webpack и ts-loader @MichaelBauer

Ответ №1:

После использования «babel-loader» и «ts-loader» синтаксис «??=» можно использовать в обычном режиме

   rules: [
    {
      test: /.tsx?$/,
      exclude: /(node_modules|bower_components)/,
      use: [
        {
          loader: "babel-loader",
          options: {
            presets: ["@babel/env"],
          },
        },
        {
          loader: "ts-loader",
        },
      ],
    },
  ],