tsconfig.json 设置了 es6选项,然后用了Map,编译没问题运行不对。看了下生成的代码,明显是for of 转码错误
TS代码,for of遍历Map
let _m = new Map<number,string>();
_m.set(1,"ass");
_m.set(2,"gsdf");
for(let [key,value] of _m){
cc.log(value);
}
转成js后的代码(Chrome查看)
var _m = new Map();
_m.set(1, "ass");
_m.set(2, "gsdf");
for (var _b = 0, _m_1 = _m; _b < _m_1.length; _b++) {
var _c = _m_1[_b], key = _c[0], value = _c[1];
cc.log(value);
}
明显,for of被转成原始的for ++循环,访问Map的length没有任何意义
我的tsconfig.json配置 creator 1.6.1
{
"compilerOptions": {
"module": "commonjs",
"lib": [ "dom", "es6", "es2015.promise" ],
"target": "es6",
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}