Javascript Typescript声明文件中的建模(长)API

Javascript Typescript声明文件中的建模(长)API,javascript,typescript,definition,typescript-typings,Javascript,Typescript,Definition,Typescript Typings,我对如何在Typescript中为API建模感到有点困惑 我正在尝试对API建模,例如使用情况,看起来有点像这样: hexo.extend.tag.register(name, function(args, content){ // ... }, options); //hexo.d.ts declare module 'hexo' { namespace extend { export class tag { public register

我对如何在Typescript中为API建模感到有点困惑

我正在尝试对API建模,例如使用情况,看起来有点像这样:

hexo.extend.tag.register(name, function(args, content){
  // ...
}, options);
//hexo.d.ts
declare module 'hexo' {
    namespace extend {
        export class tag {
            public register: _register;
        }
    }
}

declare class _register {
    name: string;
    callback(args: any, content: any); 
    options: _options;
}

declare class _options {
    ends: boolean;
}
到目前为止,我得到了如下结果:

hexo.extend.tag.register(name, function(args, content){
  // ...
}, options);
//hexo.d.ts
declare module 'hexo' {
    namespace extend {
        export class tag {
            public register: _register;
        }
    }
}

declare class _register {
    name: string;
    callback(args: any, content: any); 
    options: _options;
}

declare class _options {
    ends: boolean;
}
然而,我遇到了如下问题:

类型“typeof标记”上不存在属性“register”

那么,我应该如何对此建模呢?在模块的命名空间中声明了一个类之后,Typescript似乎变得有点棘手,而这些类型本身都不可能存在


a.b.c.d.e.f()
.d.ts
文件中会是什么样子?

一般来说,如果使用
new
调用某个对象,则它只是一个类。否则就是这样 只是一个普通的物体。我会这样做:

declare module 'hexo' {
    class Hexo {
        constructor( cwd, opts )
        load() : Promise<any>
        extend : {
            console : any //declare me later, set any for now 
            // etc
            tag : {
                register(name:string, cb: (args,content) => void , opts : any)
            }
        }
    }
    export = Hexo;
}