2013-10-22 116 views
1

出於好奇,我想知道:爲什麼類似這樣的東西不被編譯器在Typescript中允許?是否存在安全隱患?它會導致語法問題嗎?在Typescript中,爲什麼內部模塊不能引用外部模塊?

export import Bar = require('./Path/To/Bar'); // this is allowed 

module Foo { 
    export import Bar = require('./Path/To/Bar'); // this is not allowed 
} 

目前,這會導致以下錯誤:

Import declarations in an internal module cannot reference an external module. 

回答

1

All features start at -100。原則上,編譯器可以通過檢查RHS區分外部模塊導入和內部模塊導入,但實際上絕大多數外部模塊導入都會想要處於頂層,然後我們必須從模塊沒有輸出它的導入(對於AMD來說,它甚至沒有明確的說法是有道理的),從能見度的角度來看它意味着什麼。

+2

那麼這怎麼可能呢?我們如何導入才能獲得類型安全?例如,我想這樣做: declare import IFoo = require(「app/foo」); var foo:IFoo; 我正在尋找一種方式來聲明與app/foo相同類型的foo,當app/foo在不向定義方法添加app/foo的情況下導出類時。 class Foo {}; export = Foo; –

相關問題