Vyhledávání na webu

typescript - Angular 4 používat ES2017 (např. string.prototype.padStart)


Používám Angular 4 a pracuji na pipe pro řetězce, která doplňuje řetězec nulami. Ale Angular nebo VS Code hlásí chyby, že prototyp „padStart“ neexistuje.

  1. Jak nastavit tuto podporu pro můj projekt a/nebo editor?

  2. Jak přidat polyfill, pokud například padStart neexistuje?

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

Odpověď č. 1

V souboru tsconfig.json je potřeba aktualizovat lib na es2017.

Cíl (--target)

Určete cílovou verzi ECMAScript

Lib (--lib)

Seznam knihovních souborů, které mají být zahrnuty do kompilace.

Změna lib na es2017 načte typové definice pro VSCode a pro kompilaci můžete použít polyfill.

Příklad

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

    // ...

    "target": "es2015",

    // ...

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

Úplný seznam možností kompilátoru naleznete v dokumentaci TypeScriptu

Angular má spoustu polyfillů, které jsou ve výchozím nastavení zakomentované v polyfills.ts. Můžete odkomentovat, co potřebujete, a přidat závislosti, které požadují, pomocí npm nebo yarn. Ve vašem případě potřebujete pouze polyfill pro prototyp řetězce z ES7.

Odpověď č. 2

Přidejte následující řádek do svého souboru polyfills.ts:

import 'core-js/es7/string';

padStart je součástí es2017 (nebo stručně es7).

Nebo můžete nainstalovat modul mdn-polyfills a vložit tento řádek:

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

Související články