TypeScript - 构建 .d.ts 定义文件 - 嵌套函数。

use*_*872 2 typescript

我正在为 RiotJS 创建 TypeScript 定义。这个库使用嵌套函数,如下所示:

riot.route( args ); // function
riot.route.parser( args ); // function in function
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止所拥有的摘录:

declare module riot
{
    export function route( callback : Function ) : void
    export function route( to : string ) : void
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何构造“riot.route.parser()”嵌套函数的定义,想知道是否有人对此有任何见解可以分享?

谢谢

bas*_*rat 5

这是一个使用内联类型的实现:

declare var riot: {
    route: {
        (callback: Function): void
        parser: {
            (args): any;
        }
    };

}

riot.route(() => null); // function
riot.route.parser(1); // function in function
Run Code Online (Sandbox Code Playgroud)

我建议你把它分解成接口,根据 a.) 目的或 b.) 实际文档如何调用它们来命名它们。

一个让你开始的例子:

interface Riot {
    route: {
        (callback: Function): void
        parser: {
            (args): any;
        }
    };

}
declare var riot:Riot;

riot.route(() => null); // function
riot.route.parser(1); // function in function
Run Code Online (Sandbox Code Playgroud)

更新

对于返回类型/参数数量不变的函数重载,我推荐联合类型:

interface Riot {
    route: {
        (toOrCallback: string|Function): void
        (callback: Function): void
        parser: {
            (args): any;
        }
    };

}
Run Code Online (Sandbox Code Playgroud)