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.
Jak nastavit tuto podporu pro můj projekt a/nebo editor?
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';