我怎样才能声明一个接口,函数和variables具有相同的名称?

我怎样才能声明一个接口,函数和variables具有相同的名称?

例如,我想使用如下function:

declare function someName(...args: any[]); someName('foo'); 

界面:

 interface someName { (...args: any[]): someName } function test(arg: someName): someName { } 

并将其作为一个variables(用于NodeJS),它应该在编译的JS中得到输出。

 var someName = require('someName'); 

一旦声明了描述函数的接口,也可以使用接口作为types声明具有相同名称的variables:

 interface someName { (...args: any[]): someName; } declare var someName: someName; someName('foo'); function test(arg: someName): someName { return this; } 

调用someName('foo')正确地猜测你的意思(即variablessomeName ,这是一个函数)。

我实现了test函数的主体,就像返回一个someName – 只是为了确保没有编译错误。

作为外部模块的types定义的完整实现将是:

someName.ts

 interface someName { (...args: any[]): someName; } declare var someName: someName; export = someName; 

app.ts

 import * as someName from 'someName' someName('grr', 'arr', 'arg') 

史蒂夫回答你问的问题。 但我怀疑你正在寻找以下内容:

types定义someName.d.ts

 declare module 'someName' { interface someName { (...args: any[]): someName } var someName:someName; export = someName; } 

然后使用它app.ts

 import someName = require('someName'); 

更多

https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1