2017-04-21 90 views
2

我正在爲一組應用程序特定的API創建一些智能感知,並且好奇它是否可以將回調函數的參數定義爲先前定義的接口?我擔心我甚至不能正確地問這個問題,所以我只會告訴你代碼。是否可以將回調函數參數定義爲命名空間接口?

我有一個包含打字稿定義的intellisense的絕對類型的文件。它相當長,所以我只會顯示相關的內容。

declare interface N_search { 
    create: { 
     (options: { 
      type: string 
     }): N_search.Search 
} 

declare namespace N_search { 

    interface Search { 
     run(): N_search.ResultSet 
    } 
    interface Result { 
     type: string 
     id: number 
    } 
    interface ResultSet { 
     each: { 
      (callback (N_search.Result)) : void //aware this is not correct... 
    } 

可能很難從那個混亂中收集,但ResultSet接口內部的(回調)是一個函數。該函數的參數是一個N_search.Result對象,我希望intellisense顯示這一點。這是我期待獲得智能感知的JavaScript。

var search = N_search.create(options); 

search.run().each(function (result) { 
    result. /* I want intellisense here to show the N_search.Result object 
     which should be type: string ; id: number */ 
}); 

我希望我的問題有道理,我非常感謝任何幫助!

+0

不'回調=()=> N_search.Result'不行? – Daryl

回答

2

定義您ResultSet接口,如:

interface ResultSet { 
    each: (callback: (result: N_search.Result) => void) => void   
} 
+0

我很尷尬地說,我花了多少時間來解決這個問題!你先生已經確保我今晚能入睡:) –

+0

我們都在那裏:)沒有什麼好尷尬的。 – Saravana

相關問題