是否可以将回调函数参数定义为命名空间接口?

时间:2017-04-21 01:54:57

标签: javascript typescript definitelytyped

我正在为一组特定于应用程序的API创建一些intellisense,如果可以将回调函数的参数定义为先前定义的接口,我很好奇吗?我担心我甚至无法正确地提出这个问题所以我只会告诉你代码。

我有一个distinctTyped文件,其中包含我的typescript定义的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显示这个。这是我希望获得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 */
});

我希望我的问题有道理,我非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

定义您的ResultSet界面,如:

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