Import TypeScript-导出和导入模块

Import TypeScript-导出和导入模块,import,module,export,typescript,Import,Module,Export,Typescript,好的,这是我的文件: memberDB.ts module MemberDB { interface Member { name: string; age: number; hobbies: string[]; } class Database { private members: Member[]; constructor(first ? : Member) {

好的,这是我的文件:

memberDB.ts

module MemberDB {
    interface Member {
        name: string;
        age: number;
        hobbies: string[];
    }

    class Database {
        private members: Member[];

        constructor(first ? : Member) {
            this.add(first);
        }

        add(member: Member) {
            this.members.push(member);
        }

        logMembers() {
            for (var member in this.members) {
                console.log(member);
            }
        }
    }
}
app.js

///<reference path="memberDB.ts"/>
var db = MemberDB.Database;
var Frank = {
    name: "Frank Arne",
    age: 38,
    hobbies: ['Baking', 'Swimming']
}

db.add(Frank);
db.logMembers();
当我尝试使用node运行app.js时,出现以下错误:

/Users/.../js/app.js:2
var db = new MemberDB.Database;
         ^
ReferenceError: MemberDB is not defined
at Object.<anonymous> (/Users/.../js/app.js:2:14)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
我想在MemberDB.ts文件中将MemberDB逻辑与app.js分开。然后导入并生成一个数据库对象来执行一些工作。如何做到这一点?我还尝试导入db=require'memberDB';,没有运气

谢谢D

接口和类上都缺少导出关键字。 使类和/或接口在模块外部可见。您需要这样定义它:

module MemberDB {
    export interface Member {
        ...
    }

    export class Database {
        ...
    }
}

您的代码有两个问题:

a。您使用的内部模块错误。您需要导出它们才能添加到模块中。大卫的回答解释了这一点。但更重要的是,为什么会有这样的答案:

b。使用commonjs时,不需要使用内部模块:

您的代码应该是:

memberDB.ts:

export interface Member {
    name: string;
    age: number;
    hobbies: string[];
}

export class Database {
    private members: Member[];

    constructor(first ? : Member) {
        this.add(first);
    }

    add(member: Member) {
        this.members.push(member);
    }

    logMembers() {
        for (var member in this.members) {
            console.log(member);
        }
    }
}
并在app.ts中导入/要求它:

import memberDB = require('./memberDB');
var db = new memberDB.Database();
var Frank = {
    name: "Frank Arne",
    age: 38,
    hobbies: ['Baking', 'Swimming']
}

db.add(Frank);
db.logMembers();
注意,我还修复了db=newmemberdb.Database;例如,您需要调用构造函数

有关内部模块与外部模块的更多信息: