无法在一个文件中导入名称空间和模块

时间:2016-02-19 06:54:00

标签: typescript

file1.ts

namespace test {
    export class AA {}
}

file2.ts

/// <reference path="file1.ts" />

import * as express from "express"; // without this line it works

namespace test {
    export class BB {
        constructor(a:AA){
              var r = express.Router();
              ...
        }
    }
}

如果我评论上面的导入行,代码会编译,但表示导入缺失。如果我继续导入,我会

enter code hereerror TS2304: Cannot find name 'AA'

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您正在混合所谓的“内部”和“外部”打字稿模块(http://www.typescriptlang.org/Handbook#modules)。

“import”keywoard告诉编译器你正在使用“外部”方法。在这种情况下

file1.ts - 导出内容

module test {
    export class AA {}
}

export = test;

file2.ts - 导入您的测试模块

import * as express from "express"; // without this line it works
import { AA } from "test"

module test {
    export class BB {
        constructor(a:AA){
              var r = express.Router();
              ...
        }
    }
}

更新1

这在VS2015中对我有用:

文件“test.ts”:

namespace test {
    export class AA {
        prop: string;
    }
}

export = test;

file“consumer.ts”:

import { AA } from "test";

namespace test {
    export class BB {
        constructor(a: AA) {
            a.prop = "some val";
        }
    }
}