Node.js 尽管变量在同一个类中,但TypeScript找不到命名空间

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

我正在尝试定义回调定义,以便在Node.js项目中更轻松地处理许多回调

我的database.ts文件如下所示:

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

修理 请不要将
视为
命名空间
。该文件是一个模块


还要注意导出默认值

我相信这个网站上的几乎每个问题都是一个常见的学习曲线问题:)我相信这个网站上的几乎每个问题
都是一个常见的学习曲线问题
:)