当我输入chrome dev工具时:
"1".padStart(2,0)
Run Code Online (Sandbox Code Playgroud)
我明白了
"01"
Run Code Online (Sandbox Code Playgroud)
但是当我写作
"1".padStart(2,0)
Run Code Online (Sandbox Code Playgroud)
在我的打字稿项目中
我明白了
Property 'padStart' does not exist on type 'string'.
Run Code Online (Sandbox Code Playgroud)
为什么Typescript会抱怨?我该如何解决?
我还是找不到合适的答案."target"选项定义了结果将在哪个版本的Javascript上运行."lib"选项在任何地方都不太清楚.似乎它是一种更精细的方式来描述目标环境,但是它似乎很奇怪它会影响你在.ts源文件中写的内容.认为TS是什么作为JS的超集,那么为什么它会影响,例如,Promis()是否可用?这似乎不仅定义了目标,还影响了Typescript中可用的功能.有人可以清楚地或直接解释答案(在typescriptlang.org或我看过的书中都没有,例如,"指定要包含在编辑中的库文件",这绝对没有解释
假设我想使用Object.values()
. 为了使用它,我必须设置"lib":["es2017"]
. 但后来我有"target":"es6"
。
作为一个新的 Typescript 用户,我读这个的方式是我正在用es2017
方法编写并且它正在输出es6
代码。
所以我的问题是,为什么我需要一个 polyfill,我该如何选择一个可靠的 polyfill?
我在中有以下设置tsconfig.json
。我添加"es2017"
了使用Array.includes
。:
{
"compilerOptions": {
"lib": [
"es6",
"es2017",
"dom"
],
"module": "es6",
"target": "es5"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我意识到,我必须添加import 'core-js/es7/array';
到polyfills.ts
,以Array.includes
用于Internet Explorer11。target
中的tsconfig.json
设置为es5
,而没有Array.includes
。
为什么需要添加polyfill?