我将 TypeScript 与"target": "es5"
. 我也在使用es6-shim
,我已经安装了es6-shim/index.d.ts
文件。没关系。我的问题是为什么当我尝试执行以下操作时会出现错误:
const map = new Map<string, number>([
['A', 1],
['B', 2]
]);
错误如下所示:
但是,如果我“转换”数组以明确声明它包含字符串/数字对的元组,那么它可以工作:
const map = new Map<string, number>(<[string, number][]>[
['A', 1],
['B', 2]
]);
另一方面,如果我将编译器设置更改为"target": "es6"
,则错误再次消失并且不需要强制转换。
所以我的问题是,为什么编译器在 es5 模式下无法确定数组包含字符串/数字元组?有没有办法“修复”它以便不需要演员?
编辑
这是我的tsconfig.json
文件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}