Angular 4使用ES2017(例如string.prototype.padStart)

时间:2017-10-28 12:50:27

标签: angular typescript es2017

我正在使用角度4并使用字符串管道用零填充字符串。 但是角度或vs代码会丢失原型“padStart”不存在的错误。

  1. 如何为我的项目和/或编辑器设置此支持?

  2. 如果添加polyfill,例如padStart不存在?

  3. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

3 个答案:

答案 0 :(得分:4)

tsconfig.json中,您需要将lib更新为es2017

目标(--target)

  

指定ECMAScript目标版本

库(--lib)

  

要包含在编译中的库文件列表。

lib更改为es2017可以获取VSCode的类型,并且可以使用polyfills进行编译。

示例

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

    // ...

    "target": "es2015",

    // ...

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

您可以在TypeScript的docs

中找到编译器选项的完整列表。

Angular有很多polyfill,默认情况下它们在polyfills.ts中被注释掉。您可以取消注释所需的内容,并使用npmyarn添加他们所要求的依赖项。在您的情况下,您只需要ES7的字符串原型polyfill。

答案 1 :(得分:2)

在您的items(tiers, id_item, n_version_item)中添加以下行:

polyfills.ts

import 'core-js/es7/string';是es2017的一部分(简称es7)。

或者您可以安装mdn-polyfills模块并放置以下行:

padStart

答案 2 :(得分:0)

填充ES2017字符串功能:

不是像其他答案中所建议的那样允许 ALL ES2017键入。

  1. import 'core-js/es7/string';添加到polyfill.ts
  2. 将库ES2017.string附加到lib(位于tsconfig.json中)

lib选项告诉编译器存在哪些方法(在运行期间)。他们不添加代码。这就是为什么我们还必须添加实际的polyfill的原因。没有polyfill,旧的浏览器可能会抛出异常。

其他答案可能很危险,因为您很可能会忘记在代码编辑器/编译器告诉您 ALL 其他ES2017功能会可用。