无法使用节点 + TypeScript 从导入的模块实例化对象



所以我正在尝试编写一个可以在node中使用的非常基本的模块。它产生了一个我不太确定如何解决的实例化错误。请原谅命名,我只是将这个例子放在一起,以便解决这个问题。

正在使用的模块:

module Server {
  export interface iCalc {
    add(x : number, y : number) : number;
    mul(x : number, y : number) : number;
    div(x : number, y : number) : number;
    sub(x : number, y : number) : number;
  }
  export class ServerCalc implements iCalc {
    constructor() {}
    add( x : number, y : number) {
      return x + y;
    }
    mul( x : number, y : number) {
      return x * y;
    }
    div( x : number, y : number) {
      return x/y;
    }
    sub( x : number, y : number) {
      return x-y;
    }
  }
}

最基本的试验台:

/// <reference path='node.d.ts' />
/// <reference path='Server.ts' />
var serve = require("./Server.js");

var tmp = new serve.ServerCalc();
console.log(tmp.add(1,1));

注意 我使用了上述方法来尝试使对象可以通过节点访问。我还尝试了以下方法,遵循应该更 TypeScript 惯用的方法(但它会产生相同的错误):

/// <reference path='Server.ts' />

var tmp = new Server.ServerCalc();
console.log(tmp.add(1,1));

以及它产生的错误:

.../test.js:5
var tmp = new serve.ServerCalc();
      ^
      TypeError: undefined is not a function
      at Object.<anonymous> (.../test.js:5:11)
  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:901:3

正在使用 --module commonjs 选项编译模块。

首先,

不要将内部模块与node一起使用。这些是多余的。即删除"模块服务器"

其次,".js"部分即使对于普通 js 也是无效的,所以它应该是,

var serve = require("./Server");

第三,打字稿对外部模块使用导出/导入组合:

import serve = require("./Server");

PS :此视频可能会帮助您了解更多 http://www.youtube.com/watch?hd=1&v=KDrWLMUY0R0

最新更新