我正在使用角度4并使用字符串管道用零填充字符串。 但是角度或vs代码会丢失原型“padStart”不存在的错误。
如何为我的项目和/或编辑器设置此支持?
如果添加polyfill,例如padStart不存在?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
答案 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
中被注释掉。您可以取消注释所需的内容,并使用npm
或yarn
添加他们所要求的依赖项。在您的情况下,您只需要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
键入。
import 'core-js/es7/string';
添加到polyfill.ts
ES2017.string
附加到lib
(位于tsconfig.json
中) lib
选项告诉编译器存在哪些方法(在运行期间)。他们不添加代码。这就是为什么我们还必须添加实际的polyfill的原因。没有polyfill,旧的浏览器可能会抛出异常。
其他答案可能很危险,因为您很可能会忘记在代码编辑器/编译器告诉您 ALL 其他ES2017
功能会可用。