【发布时间】:2017-12-25 13:16:57
【问题描述】:
我在使用 TypeScript 2.4.1、Node.js v8.1.3 和 VS Code 1.14.0 时遇到了一些问题。
由于某种原因,我的实验代码没有按顺序打印。尤其是 rest 和 foreach 部分。
这是我的测试页。
我错过了什么吗?
GggDataStructuresIntTests.ts
var dotdotdotFun = function () {
let [first, ...rest] = [1, 2, 3, 4, 5];
console.log("first", first); // outputs 1
console.log("rest", rest); // outputs [ 2, 3, 4 ]
rest.forEach((item) => {
console.log("forEach", item);
});
}
dotdotdotFun();
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "js/",
"sourceMap": true,
"lib": [ "es2015" ],
"watch": true
},
"exclude": [
"node_modules",
"typings/browser.d.ts",
"typings/browser"
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Node.js",
"program": "${file}",
"outFiles": [
"${workspaceRoot}/js/**/*.js"
]
}
]
}
有一些输出;
输出 1:
输出 2:
输出 3:
【问题讨论】:
-
这是完全有效的 javascript,所以我怀疑 typescript 与此有关。将您的 sn-p 弹出到我的浏览器控制台中的行为符合预期(首先,休息,然后是 foreaches)
-
@Rob 嗯,所以你认为可能是 TypeScript 编译器弄乱了顺序?
-
如果它是 typescript,那将是编译器中的一个非常大的错误。我几乎可以肯定这与打字稿无关。也许节点正在做一些可疑的事情(或者另一段代码正在另一个线程上调用该方法)
-
我明白了,也许我应该在问题中包含节点 8.1.3 版本,因为我也在节点调试器下运行。
-
好像
console.log函数是一个异步函数。取决于使用的浏览器和库。
标签: javascript node.js typescript visual-studio-code