2013-07-16 96 views
1

为什么从这个代码为什么TypeScirpt先不生成类?

var test = new Foo(); 

class Foo { 
    constructor() { 

    } 
} 

产生打字稿编译这个失败

var test = new Foo(); 

var Foo = (function() { 
    function Foo() { 
    } 
    return Foo; 
})(); 

,而不是这个?

var Foo = (function() { 
    function Foo() { 
    } 
    return Foo; 
})(); 

var test = new Foo(); 

我无法想象任何理由,为什么不类首先生成...

+0

由于TS确定带有IIFE类,所得到的富函数式,而不是一个函数声明。如果它是一个声明,那么你的代码将起作用。 TS可能会将所有类操作移到顶端,但真正的问题是为什么您会以失败的顺序编写它以便开始。 –

回答

2

这很容易看出,这个简单的代码不正确排序。

但是,几乎不可能采取任何代码并确定它是否正确排序。这比编码任何代码更难,并且始终生成正确的排序。正确的排序可能不存在。

即使这是在每个文件的基础上解决的,没有什么能够阻止您搞乱网页上script标签的顺序并导致排序问题。

考虑到这一点,编译器只是有一个关于排序的简单规则:代码是按照您指定的顺序发出的。

0

Typescript不会为您的代码执行任何语义排序。

及其相同的代码块:

var b = x; 
x=123; 
var x; 
相关问题