我的名字空间没有定义。 打字稿

我得到了Visual Studio Community 2015 + Node.js工具,我创build了“Blank Node.js控制台应用程序”Typescript项目

我已经添加了一个TypeScript文件,TypeScript1.ts并提出以下内容:

module MyModule { export class Calculator { add(x: number, y: number): number { return x + y; }; constructor() { } } } 

在主文件中,我把这个:

 /// <reference path="TypeScript1.ts" /> console.log('Hello world'); var subject: MyModule.Calculator; subject = new MyModule.Calculator(); var result: number = subject.add(2, 3); console.log(result); 

它的构build没有问题,但是当我尝试debugging/运行时,它指出:

 ReferenceError: MyModule is not defined at Object.<anonymous> (C:\Users\User\Documents\Visual Studio 2015\Projects\NodejsConsoleApp1\NodejsConsoleApp1\app.js:8:15) 

我做错了什么?

如果它包含TypeScript1.ts文件的代码,我会检查app.js内容。 我的猜测是,它没有。

你可以运行你的tsc如下来修复它:

 tsc --module commonjs --target es5 --outFile app.js TypeScript1.ts app.ts 

请注意--outFile选项。

我相信有几个问题(假设TypeScript 1.5+):

第一个: /// <reference path="TypeScript1.ts" />

应该是: import MyModule from "./TypeScript1" ;

其次我相信你需要export module MyModule

或者你可以改变

  module MyModule { export class Calculator { add(x: number, y: number): number { return x + y; }; constructor() { } } } 

  export default class Calculator { add(x: number, y: number): number { return x + y; }; constructor() { } } 

然后import Calculator from "./TypeScript1";

或者,

  export class Calculator { add(x: number, y: number): number { return x + y; }; constructor() { } } 

然后import {Calculator} from "./TypeScript1";

分别取决于你select的上述哪一个。

第一个创buildCalculator类作为主要输出,如果计算器是您计划保留在文件中的主要内容,那么它是有用的;如果您计划在文件中有多个同等重要的东西,则第二个是有用的。

此外,模块关键字一般不再使用,而是使用命名空间关键字,因为模块关键字太混乱了,太多的人将其与文件导入模块混淆了。

命名空间的工作,甚至没有引用…我用过这样的东西…

sript1.ts

 namespace A{ class AA{ var x:number; constructor(x:number){ this.x=x; } } } 

script2.ts

 var y:A.AA = new A.AA(3); 

即使文件位于项目中的不同文件夹中,名称空间也可以工作。 我没有引用或导入任何东西。