Node.js 尽管变量在同一个类中,但TypeScript找不到命名空间
我正在尝试定义回调定义,以便在Node.js项目中更轻松地处理许多回调 我的database.ts文件如下所示:Node.js 尽管变量在同一个类中,但TypeScript找不到命名空间,node.js,typescript,callback,Node.js,Typescript,Callback,我正在尝试定义回调定义,以便在Node.js项目中更轻松地处理许多回调 我的database.ts文件如下所示: export default class Database { //Export the enums public static LoadObjectResponse = LoadObjectResponse; //Export Callback definitions public static loadObjectCallback: (resu
export default class Database {
//Export the enums
public static LoadObjectResponse = LoadObjectResponse;
//Export Callback definitions
public static loadObjectCallback: (resultCode: Database.LoadObjectResponse) => void;//ERROR
...
}
enum LoadObjectResponse {
ERROR_ON_LOADING, //"Error on Loading Object.",
OBJECT_NOT_FOUND //"Object not found."
}
因此,我需要定义一个loadObjectCallback,即参数必须是enum类型的LoadObjectResponse。但是当我尝试这样做时,编译器总是给出错误
Cannot find namespace "Database"
我不明白为什么它会给我错误,变量本身在数据库的定义中,为什么它不工作
当我尝试在类函数定义中使用它时,它会给我同样的错误:
public static loadObject(MongoModel, searchObject, callback: Database.LoadObjectResponse) {//ERROR namespace Database not found
再次出现错误:
Cannot find namespace "Database"
数据库类中函数的内部调用
Database.LoadObjectResponse
它可以完美地工作,为什么不能在变量定义中工作?这是因为
数据库。LoadObjectResponse
是一个属性而不是一个类型。不能将属性用作类型
若要使其正常工作,请将其更改为使用属性的类型:
static loadObjectCallback: (resultCode: typeof Database.LoadObjectResponse) => void;
或者直接参考LoadObjectResponse
的枚举类型:
static loadObjectCallback: (resultCode: LoadObjectResponse) => void
这是因为
Database.LoadObjectResponse
是一个属性而不是类型。不能将属性用作类型
若要使其正常工作,请将其更改为使用属性的类型:
static loadObjectCallback: (resultCode: typeof Database.LoadObjectResponse) => void;
或者直接参考LoadObjectResponse
的枚举类型:
static loadObjectCallback: (resultCode: LoadObjectResponse) => void
找不到命名空间“数据库”
这是一个常见的学习曲线问题。您需要理解并熟悉声明空间的直觉式概念:
在类型声明空间或变量声明空间中,情况是不同的
在您的情况下,public static LoadObjectResponse
是一个变量,因此不能用作类型(注释用法错误:Database.LoadObjectResponse
)
修理
请不要将类
视为命名空间
。该文件是一个模块
还要注意导出默认值:
找不到命名空间“数据库”
这是一个常见的学习曲线问题。您需要理解并熟悉声明空间的直觉式概念:
在类型声明空间或变量声明空间中,情况是不同的
在您的情况下,public static LoadObjectResponse
是一个变量,因此不能用作类型(注释用法错误:Database.LoadObjectResponse
)
修理
请不要将类
视为命名空间
。该文件是一个模块
还要注意导出默认值
:我相信这个网站上的几乎每个问题都是一个常见的学习曲线问题:)我相信这个网站上的几乎每个问题都是一个常见的学习曲线问题:)