2015-11-02 71 views
3

的錯誤我有一個包含一個模塊內A類文件a.ts:打字稿:「無法找到名爲」進口

module moduleA { 

    export class A { 
    } 

} 

export = moduleA.A; 

和進口A類另一個文件b.ts:

import A = require('a.ts'); 

class B { 

    // This leads to an error: Cannot find name 'A' 
    private test: A = null; 

    constructor() { 
    // But this is possible 
    var xyz = new A(); 
    } 
} 

有趣的是,當我想用​​A作爲B中的一個類型時,Typescript顯示錯誤。但是,實例化A並不會導致錯誤。

有人可以解釋我爲什麼這樣嗎? 非常感謝!

回答

5

了命名空間module moduleA是沒有必要的......你可以做到這一點...

關鍵字module與命名空間(C#)...現在最好的做法是使用ES6風格模塊的代名詞基本上每個文件的結構都是一個模塊並導出你需要的東西,並從別處導入你需要的東西。

// a.ts 
export class A {} 

// b.ts 
import { A } from './a'; 
class B { 
    private test: A = null; // will not error now 
    constructor() { 
    var xyz = new A(); 
    } 
} 

注意:這是基於打字稿V1.5 +

+0

非常感謝您的回答!雖然我需要這樣的模塊結構,因爲我有變量,必須保持在類A之外,但在模塊內部。難道你不認爲我的解決方案在理論上應該像那樣工作嗎? – gizmodus

+0

@ user986305如果您按照Brocco的方式進行操作,您仍然應該能夠在課程外部聲明變量,但在同一個文件中。 – JKillian

+0

@JKillian是正確的,那些變量將被包含在該文件/模塊的範圍內而不會泄漏到外部。 – Brocco