我对TypeScript非常陌生,尤其是对于编写/扩展外部包的声明文件的新手。
我正在使用args
npm软件包。它是用JavaScript编写的,因此其类型在@types/args
中声明。
/**
* args/lib/index.js
*/
const publicMethods = {
option: require('./option'),
options: require('./options'),
command: require('./command'),
parse: require('./parse'),
example: require('./example'),
examples: require('./examples'),
showHelp: require('./help'),
showVersion: require('./version')
}
function Args() {
this.details = {
options: [],
commands: [],
examples: []
}
/* ... */
}
/* ...assign `publicMethods` to `Args` class... */
module.exports = new Args()
/**
* @types/args/index.d.ts
*/
declare const c: args;
export = c;
interface args {
/* ... */
}
/* ... */
args
类具有一个名为details
的私有属性(尽管我不知道为什么它是私有的),但未被@types/args
公开。我想扩展args接口以暴露该属性,以便可以迭代这些选项,但是由于导出是变量而不是模块,因此我还没有弄清楚该怎么做。
我尝试使用带有和不带有declare module
的{{1}},namespace
,declare namespace
,declare const
和declare var
。这些都不起作用,或者我做错了。
答案 0 :(得分:0)
您可以尝试以下方法:
type IyourTypeThatExtendArgs = { myProperty: string } & args;
此代码将为您创建新类型,并且type将扩展args类型。 在花括号之间,您可以添加自己的属性以及args属性。 &表示右侧的扩展类型。