VS C 1.43.2, TS 3.8.3, Node v13.11.0
С целью компиляции по умолчанию TS C разворачивает функции генератора в операторы switch. Интерактивный отладчик может затем входить и выходить из вызовов метода next()
генератора каждый раз, когда он вызывается.
Однако при нацеливании на цели компиляции JS, которые сохраняют функции генератора, отладчик может step в вызов для создания генератора, но перешагнув через внутри генератора, никогда не приводит к выходу отладчика.
Например, если вы прервете вызов gen()
в файле примера и затем нажмите F11, чтобы войти в функцию генератора, никакое нажатие F10 не отступит от него. Остальная часть файла будет выполняться с отладчиком, все еще находящимся в области действия генератора. Поведение будет таким же, если вы прервете вызов next()
и нажмете F11.
Это ограничение отладчика VS C или есть какая-то дополнительная конфигурация, которую мне нужно установить для более Интуитивно понятный опыт интерактивной отладки?
Запуск конфигурации:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "some name",
"program": "${file}",
"outFiles": ["${workspaceFolder}/**/*.js"],
"runtimeArgs": ["--experimental-modules", "--es-module-specifier-resolution=node"],
"smartStep": true,
}
]
}
Конфигурация TS:
{
"compilerOptions": {
"sourceMap": true,
"target": "ESNext"
},
}
Пример файла TS:
function* gen() {
for (let i = 0; i < 3; i++) {
yield i;
}
}
const x = gen();
const y = 2 + 2;
console.log(x.next());
console.log(x.next());
console.log(x.next());