我的名字空间没有定义。 打字稿
我得到了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);
即使文件位于项目中的不同文件夹中,名称空间也可以工作。 我没有引用或导入任何东西。