2016-05-05 76 views
0

這裏使用打字稿接口模塊定義的簡單接口的文件:在另一個模塊文件

interface IDirectoryLink 
{ 
    link_title: string 
    link_desc: string 
} 

這裏是類模塊的文件:

class DirectoryModel implements IDirectoryLink 
{ 

    public link_title: string 
    public link_desc: string 

    constructor(fields: Object) 
    { 
     // Loops to populate class properties with fields values 
     _.forOwn(fields, (value, key) => // Needs fat arrow to bind 'this' 
     { 
      if (value) { this[key] = value } 
     }) 
    } 
} 

後來下來的文件,我instanciate類:

let directoryModel: IDirectoryLink = new DirectoryModel(fields) 
let directoryModel: IDirectoryLink = new DirectoryModel(fields) 

然後仍然在模塊A,將該實例傳遞到模塊B中的函數進行驗證:

let val = validation.modelValidator(directoryModel) 

在模塊B檔,這裏是正在傳遞的模型實例做了一些工作的函數的頂部:

export let modelValidator = function (directoryModel: IDirectoryLink) // cannot find name IDirectoryLink 
{ 
//code 
} 

我希望的實例作爲「通過directoryModel'將是IDirectoryLink類型。但不是,它的類型是「any」,如果我在上面的代碼中添加':IDirectoryLink',它會顯示'找不到名稱IDirectoryLink'。

什麼是正確的方式能夠將傳遞的實例識別爲模塊B文件中的IDirectoryLink類型? 我應該導入B中包含導出接口的整個模塊A嗎?

回答

0

問題是,在您的其他文件中,它不知道類型'IDirectoryLink'。您需要導入該類型。

這意味着您需要從模塊A(接口類型和實現)導出多個東西,或者需要兩個模塊,一個包含您的接口(由模塊B導入)和一個包含您的實現的模塊。

相關問題