Class 类定义顺序

Class 类定义顺序,class,typescript,Class,Typescript,有人能解释一下为什么编译下面的typescript代码吗?在我看来,它永远不会成功运行 class Xyz { static x : Abc = new Abc(); } class Abc { } 没有编译时错误,因为它相当于这个语法有效的JavaScript var Xyz = (function () { function Xyz() { } Xyz.x = new Abc(); return Xyz; })()

有人能解释一下为什么编译下面的typescript代码吗?在我看来,它永远不会成功运行

class Xyz
    {
    static x : Abc = new Abc();
    }

class Abc
    {

    }

没有编译时错误,因为它相当于这个语法有效的JavaScript

var Xyz = (function () {
    function Xyz() {
    }
    Xyz.x = new Abc();
    return Xyz;
})();
var Abc = (function () {
    function Abc() {
    }
    return Abc;
})();

但它会有运行时错误,因为您试图在定义
Abc
之前实例化
Abc
的成员。

TypeScript不会强制执行代码中构造的排序。考虑一些小的变体,这是有效的。在排序方面,什么东西应该被允许或不允许。
class Xyz
    {
    static x = () => new Abc();
    }

class Abc
    {

    }

对于简单的情况,可以添加此选项。

为什么不?我看不出有什么问题。。。