typescript - Angular 4 bruk ES2017 (f.eks. string.prototype.padStart)


Jeg bruker Angular 4 og jobber med en strengpipe for å fylle strenger med nuller. Men Angular eller VS Code gir feil om at prototypen "padStart" ikke eksisterer.

  1. Hvordan sette opp denne støtten for prosjektet mitt og/eller redigeringsprogrammet?

  2. Hvordan legger man til polyfill hvis for eksempel padStart ikke eksisterer?

https://developer.mozilla.org/no/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

Svar #1

I tsconfig.json må du oppdatere lib til å være es2017.

Mål (--target)

Angi ECMAScript-målversjon

Bibliotek (--lib)

Liste over bibliotekfiler som skal inkluderes i kompileringen.

Å endre lib til es2017 inkluderer typene for VSCode, og for kompilering kan du bruke polyfills.

Eksempel

{
  "compileOnSave": false,
  "compilerOptions": {

    // ...

    "target": "es2015",

    // ...

    "lib": [
      "dom",
      "es2017" // <-- change to use es2017
    ],
    "paths": { ... }
  }
}

Du kan finne den fullstendige listen over kompilatoralternativer i TypeScripts dokumentasjon

Angular har en rekke polyfiller som som standard er kommentert ut i polyfills.ts. Du kan fjerne kommentarene på det du trenger og legge til avhengighetene de krever ved hjelp av npm eller yarn. I ditt tilfelle trenger du bare polyfill for strengprototypen fra ES7.

Svar #2

Legg til følgende linje i din polyfills.ts:

import 'core-js/es7/string';

padStart er en del av es2017 (eller es7 for kort).

Eller du kan installere mdn-polyfills-modulen og sette inn denne linjen:

import 'mdn-polyfills/String.prototype.padStart';

Relaterte artikler