我怎样才能声明一个接口,函数和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');