如何在一个文件中导入所有类并从那里使用它们打字稿

时间:2017-07-18 09:53:46

标签: node.js typescript

例如,我有一个课程 A.ts

export class A(){
    public constructor() {}
    public method() : string {
         return "hello from A";
    }
}

和班级 B.ts

export class B(){
    public constructor() {}

    public method() : string {
         return "hello from B";
    }

    public static methodStatic() : string {
        return "hello from static B";
    }
}

然后我想在一个文件Headers.ts

中导入所有这些
imports {A} from    "../A_path";
imports * as b from "../B_path";

//Or just to export it? Make it public.
export * from "../A_path";
export * from "../B_path";

Headers.ts只包含imports/exports,没有类实现或任何其他代码。 然后是我的问题:我想在app.ts中使用 A B 类来调用 Headers.ts 档案。

import * as headers from './HEADERS_path';
headers.A.method();
headers.B.method();

怎么做?

2 个答案:

答案 0 :(得分:8)

好的,我找到了解决方案: 在 Headers.ts 文件中我只需要导出类:

export {A} from "../A_path";
export {B} from "../B_path";

然后使用 B 类,我需要在 app.ts 文件中导入 Headers.ts

import * as headers from './HEADERS_path';

然后我将创建 B 类的实例并轻松调用它的方法:

let bInstance : headers.B = new headers.B();
//concrete method
bInstance.method();
//output will be what is expected: *"hello from B"*

//static method
headers.B.methodStatic();
//output will be what is expected: *"hello from static B"*

答案 1 :(得分:2)

您必须导出Headers.ts

中的所有课程
export {A} from "../A_path";
export {B} from "../B_path";

例如,如果您在A_path中有多个课程,则可以执行以下操作:

export * from "../A_path";

请注意,export * from导出时default无法使用。

您可以在MDN上阅读有关导入/导出的更多信息。