当我输入chrome dev工具时:
"1".padStart(2,0)我得到了
"01"但是当我写的时候
"1".padStart(2,0)在我的typescript项目中
我得到了
Property 'padStart' does not exist on type 'string'.为什么Typescript会抱怨?我该如何解决这个问题?
发布于 2018-09-12 18:33:01
padStart是在ES2017标准中定义的。您需要告诉typescript使用适当的类型(用于ES2017的类型)。如果您的运行时支持ES2017所需的所有语言特性,则可以通过将目标设置为ES2017来实现这一点(在编写本文时,情况可能并非如此)。
另一种选择是只设置libs选项,以便根据ES2017获得运行时对象的类型,但仍然向下编译到目标语言版本。(请注意,运行时本身需要支持padStart,typescript将不提供任何多边形填充)
您可以使用lib选项在tsconfig中执行此操作:
"compilerOptions": {
"target": "es2016",
"lib": [
"es2017",
"dom"
"scripthost"
],
// ...
}您可以在这个answer中阅读更多关于lib vs target的内容。
发布于 2018-11-16 22:32:45
要使TypeScript能够识别String.prototype.padStart(),您需要在tsconfig.json的库列表中指定es2017。如果你这样做了,那么TypeScript将假设所有的ES2017特性都可以使用,而这可能不是你想要的。
像Node.js这样的平台并不总是实现新的ECMAScript语言规范的完整特性集,所以只添加您确信存在的语言特性会更安全。如果您不确定目标平台支持哪些功能,可以在node.green或MDNs browser compatibility list等页面上查找。
padStart函数是字符串原型的一部分,因此只需在tsconfig.json中添加es2017.string就足够了
{
"compilerOptions": {
"lib": ["es6", "es2017.string"],
...
},
}https://stackoverflow.com/questions/52293010
复制相似问题