Javascript Typescript声明文件中的建模(长)API
我对如何在Typescript中为API建模感到有点困惑 我正在尝试对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
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;
}