Если вы действительно хотите реализовать это таким образом, вам понадобится какой-то запасной вариант для val
, если перехват происходит.
Реализуйте это следующим образом:
const foo = (() => {
let val = undefined
try {
val = 4
} catch (err) {
throw new Error(err);
}
return { val }
})();
console.log(foo.val);
Это может быть просто проблема с TypeScript, но это решит проблему. о котором стонет ТС.