gpt4 book ai didi

javascript - 在 Typescript 声明文件中建模(较长)API

转载 作者:行者123 更新时间:2023-11-27 22:42:06 26 4
gpt4 key购买 nike

我对如何在 Typescript 中对 API 进行建模有点困惑。

我正在尝试对 hexo 进行建模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;
}

但是,我遇到了以下问题:

Property 'register' does not exist on type 'typeof tag'.

那么我应该如何对此进行建模,在模块的命名空间中声明了一个类之后,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;
}

export = Something 在模块导出单个对象时使用(Hexo 类成为模块本身,而不是其中的对象)。

PS:回调类型(实际上是任何类型)可以使用 type 关键字引用。 type 关键字甚至可以取代 interface 关键字...

type someCallback = ( err : Error , resp : HttpResponse ) => Promise<any>

关于javascript - 在 Typescript 声明文件中建模(较长)API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38676629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com