当我输入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
复制相似问题