Node.js 如何声明具有相同名称的接口、函数和变量?
如何声明具有相同名称的接口、函数和变量 例如,我想使用如下功能:Node.js 如何声明具有相同名称的接口、函数和变量?,node.js,typescript,Node.js,Typescript,如何声明具有相同名称的接口、函数和变量 例如,我想使用如下功能: declare function someName(...args: any[]); someName('foo'); 界面: interface someName { (...args: any[]): someName } function test(arg: someName): someName { } 并将其用作变量(用于NodeJS),该变量应按编译后的JS中的原样获得输出 var someName =
declare function someName(...args: any[]);
someName('foo');
界面:
interface someName {
(...args: any[]): someName
}
function test(arg: someName): someName {
}
并将其用作变量(用于NodeJS),该变量应按编译后的JS中的原样获得输出
var someName = require('someName');
声明描述函数的接口后,还可以使用接口作为类型声明具有相同名称的变量:
interface someName {
(...args: any[]): someName;
}
declare var someName: someName;
someName('foo');
function test(arg: someName): someName {
return this;
}
调用someName('foo')
可以正确地猜测您的意思(即变量someName
,它是一个函数)
我实现了test
函数的主体,因为您让它返回someName
——只是为了确保没有编译器错误
作为外部模块的类型定义的完整实现是:
someName.ts
app.ts
声明描述函数的接口后,还可以使用接口作为类型声明具有相同名称的变量:
interface someName {
(...args: any[]): someName;
}
declare var someName: someName;
someName('foo');
function test(arg: someName): someName {
return this;
}
调用someName('foo')
可以正确地猜测您的意思(即变量someName
,它是一个函数)
我实现了test
函数的主体,因为您让它返回someName
——只是为了确保没有编译器错误
作为外部模块的类型定义的完整实现是:
someName.ts
app.ts
史蒂夫回答了你问的问题。但我怀疑您正在寻找以下信息: 类型定义
someName.d.ts
:
然后使用它app.ts
:
更多
史蒂夫回答了你问的问题。但我怀疑您正在寻找以下信息: 类型定义
someName.d.ts
:
然后使用它app.ts
:
更多
我尝试了此操作,但在尝试编译
错误TS2307:找不到模块“someName”时出错。
将文件名从some name.ts
更改为someName.ts
-导入语句中使用的名称应为文件名。我尝试了此操作,但在尝试编译错误TS2307:找不到模块时出错“someName”。
:将文件名从some name.ts
更改为someName.ts
-导入语句中使用的名称应为文件名。似乎是这样工作的,是否可以使其与命名空间一起工作@佩塔:是的。。。。但不要混合使用名称空间/模块。只要到处使用模块就可以了。如果您使用ModuleSems这样工作,文件自动没有全局作用域,是否可以使其与名称空间一起工作@佩塔:是的。。。。但不要混合使用名称空间/模块。只要到处使用模块就可以了。如果使用模块,则文件自动不具有全局作用域
import * as someName from 'someName'
someName('grr', 'arr', 'arg')
declare module 'someName' {
interface someName {
(...args: any[]): someName
}
var someName:someName;
export = someName;
}
import someName = require('someName');