在npm包中深层嵌套函数的Typescript index.d.ts声明

时间:2018-03-13 23:58:45

标签: typescript npm declaration

不幸的是,@types/rickshaw似乎是空的,所以我必须创建自己的声明文件。这是我目前的一个:

declare module 'rickshaw' {
    export class Graph {
        constructor(obj: any);
        render: any;
    }
}

让我使用方法render并完全创建一个新实例。但是现在我想要从人力车中声明一个深层嵌套的方法。我当前的声明不允许我使用它,错误:

Rickshaw.Graph.Axis.Time({graph: newGraph})
(25,41): Property 'Axis' does not exist on type 'typeof Graph'.

我检查了方法的源代码,看起来像这样

Rickshaw.namespace('Rickshaw.Graph.Axis.Time');

Rickshaw.Graph.Axis.Time = function(args) {
 //...
}

如何声明Rickshaw.Graph.Axis.Time

编辑:这是我的新申报文件。我现在正在遇到 'new' expression, whose target lacks a constructor signature implicitly has an any type

interface TimeArgs {
    graph: typeof Graph;
    ticksTreatment: string;
}

interface AxisInterface {
    Time: (args: TimeArgs) => void;
}

export class Graph {
    constructor(obj: any);
    render: any;
    static Axis: AxisInterface;
}

我尝试通过声明tyepof Graph来修复它,因为graph中的Time参数是new Rickshaw.Graph对象的一个​​实例,但我仍然得到错误。< / p>

1 个答案:

答案 0 :(得分:1)

我不熟悉rickshaw但您已添加Graph,现在您可以在Axis内添加Graph,然后在Time内添加Axis {1}}:

declare module 'rickshaw' {
    interface TimeArgs {
        graph: any;
    }
    interface AxisInterface {
        Time: (args: TimeArgs) => void;
    }
    export class Graph {
        constructor(obj: any);
        render: any;
        static Axis: AxisInterface;
    }
}

并根据需要添加任何其他类型/接口。