javascript - Modulparsing mislyktes ved bruk av bigint-literal i Angular
Jeg jobber med et personlig prosjekt for å prøve å lære Angular-rammeverket. Jeg er for øyeblikket en total nybegynner med det, men jeg har klart (tror jeg) å inkludere javascript bigint-nummer type korrekt i typescript (ved å målrette esnext-versjonen i tsconfig.json-filen) siden dette fungerer fint:
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
}
/* ... */
}
Men hvis jeg erstatter innholdet i increment()-metoden med: this.amount += 1n; får jeg følgende feil:
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;
| }
Det er ikke et egentlig 'stort' problem (ser du hva jeg gjorde der :D) siden alt fungerer med BigInt()-kallet, men jeg lurte på om det finnes en måte å bruke rene bigint-literal direkte i prosjektet mitt!
Takk for svarene.
Svar #1
Dette er fordi BigInt ennå ikke er en del av ECMAScript-standarden, det er et forslag på trinn 3.
Derfor er TypeScript-støtte for øyeblikket begrenset til å målrette esnext.
Hvis du retter deg mot esnext, bør BigInt-litteraler fungere. Hvis du ikke gjør det, vil feilmeldingen være:
BigInt-literalene er ikke tilgjengelige når man målretter lavere enn ESNext.
Kanskje en gammel versjon av typescript er i bruk?
Svar #2
Som et tillegg til det forrige svaret er noen endringer i Angular-prosjektet nødvendig:
i package.json "typescript": "4.3.5" eller høyere
i tsconfig.json oppdatering
"module": "esnext",
"lib": ["ESNext","dom"]
"target": "esnext"
