You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript命名空间中导入另一个命名空间(ASP.NET Razor项目)

问题解决:命名空间中import引用模块导致的错误

你遇到的错误提示为:命名空间中的import声明不能引用模块,根源是你在TypeScript命名空间内部混用了ES模块的import语法,两种模块系统无法这样兼容。

以下是两种可行的解决方案:

方案一:纯TypeScript命名空间方案(不使用ES模块)

这种方式延续你原本的命名空间思路,调整代码避免ES模块语法:

  1. 修改file2.ts,移除export关键字,让namespace2成为全局命名空间:
namespace namespace2 {
    export class Class2 {
        constructor(){}
        public sayHi(){
            console.log("Hi");
        }
    }
}
  1. 修改file1.ts,仅通过reference指令关联文件,直接在命名空间内使用全局的namespace2:
///<reference path="./file2.ts" />
export namespace namespace1 {
    export class Class1 {
        constructor(){}
        public sayHello(){
            console.log("Hello");
        }
        
        // 示例:调用namespace2中的Class2
        public callNamespace2() {
            const class2Instance = new namespace2.Class2();
            class2Instance.sayHi();
        }
    }
}

注意:编译时需将tsconfig.json中的module配置设为none,确保使用TypeScript的全局模块系统。

方案二:改用ES模块方案(推荐,符合现代JS规范)

放弃TypeScript旧版命名空间,使用标准ES模块的导出导入逻辑:

方式1:直接导出类(更简洁)

  • file2.ts:
export class Class2 {
    constructor(){}
    public sayHi(){
        console.log("Hi");
    }
}
  • file1.ts:
import { Class2 } from './file2';

export class Class1 {
    constructor(){}
    public sayHello(){
        console.log("Hello");
    }
    
    public callClass2() {
        const class2Instance = new Class2();
        class2Instance.sayHi();
    }
}

方式2:保留命名空间结构(在ES模块内导出)

如果需要保留命名空间的层级结构,可将命名空间作为ES模块的导出成员,将import放在命名空间外部:

  • file2.ts:
export namespace namespace2 {
    export class Class2 {
        constructor(){}
        public sayHi(){
            console.log("Hi");
        }
    }
}
  • file1.ts:
import { namespace2 } from './file2';

export namespace namespace1 {
    export class Class1 {
        constructor(){}
        public sayHello(){
            console.log("Hello");
        }
        
        public callNamespace2() {
            const class2Instance = new namespace2.Class2();
            class2Instance.sayHi();
        }
    }
}

内容的提问来源于stack exchange,提问作者codaholic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:15:48