有人可以解释为什么以下打字稿代码编译?在我看来,它永远无法成功运行。
class Xyz
{
static x : Abc = new Abc();
}
class Abc
{
}
答案 0 :(得分:1)
没有编译时错误,因为它等同于这个语法上有效的JavaScript
var Xyz = (function () {
function Xyz() {
}
Xyz.x = new Abc();
return Xyz;
})();
var Abc = (function () {
function Abc() {
}
return Abc;
})();
但由于您在Abc
定义之前尝试实例化Abc
成员,因此会出现运行时错误。
答案 1 :(得分:1)
TypeScript不会对代码中的构造排序执行任何强制执行。考虑 有效的一些轻微变体 - 在订购方面不应该立即允许或禁止哪些内容。
class Xyz
{
static x = () => new Abc();
}
class Abc
{
}
有一个issue tracking将此作为简单案例的选项添加。