Сбой синтаксического анализа модуля при использовании литерала bigint в Angular - PullRequest
2 голосов
/ 03 мая 2019

Я работаю над личным проектом, чтобы попытаться изучить фреймворк Angular. В настоящее время я новичок в этом деле, но мне удалось (я думаю) правильно включить числовой тип javascript bigint в машинописный текст (с помощью ориентации на версию esnext в файле tsconfig.json), поскольку это работает нормально:

export class Particule {

  public name: String;
  public amount: bigint;
  public cost: bigint;

  constructor(name: String, amount: bigint, cost: bigint)
  {
      this.amount=amount;
      this.name=name;
      this.cost=cost;
  }

  public increment(): void {
      this.amount += BigInt(1); // <<< this line compiles, no problem
  }

  /* ... */

}

Но если я заменю содержимое метода increment() на: this.amount += 1n;, я получу следующую ошибку:

ERROR in ./src/app/entities/particule.ts 8:24
Module parse failed: Identifier directly after number (8:24)
You may need an appropriate loader to handle this file type.
|     }
|     increment() {
>         this.amount += 1n;
|     }

Это не «большая» проблема повторного воспроизведения (посмотрите, что я там делал: D), поскольку все работает с вызовом BigInt(), но мне было интересно, есть ли способ использовать прямые литералы bigint в моем проекте!

Спасибо за ответы.

1 Ответ

1 голос
/ 04 мая 2019

Это связано с тем, что BigInt еще не является частью стандарта ECMAScript, это предложение стадии 3 .

Следовательно, поддержка TypeScript в настоящее время ограничена таргетингом.esnext.

Если вы нацелены на esnext, литералы BigInt должны работать.В противном случае сообщение об ошибке будет следующим:

Литералы BigInt недоступны при таргетинге ниже ESNext.

Возможно, старая версия typescriptиспользуется?

...