2015-11-19 78 views
2

什么是必须的模块代码(以打字稿writen)看起来希望能够利用这样的:Node.js的模块在打字稿

/// <reference path="./onoff.ts" /> 

//import * as onoff from "./onoff"; 
var onoff = require("./onoff"); 

var app = onoff(); 

var computers: Onoff.Computer[] = []; 
app.start(computers); 

,我确信那一定是这一点,但它不工作:

import * as express from "express"; 
export module Onoff {  

    export class Computer { 

    } 

    export class OnoffApp { 


     start(computers:Computer[], port:number = 3489) { 
      ... 
     } 
    } 

    export default function() { 
     return new OnoffApp(); 
    } 
} 

打字稿抱怨:

service/example.ts(5,11): error TS2349: Cannot invoke an expression whose type lacks a call signature. 
service/example.ts(7,16): error TS2503: Cannot find namespace 'Onoff'. 
service/example.ts(8,21): error TS2503: Cannot find namespace 'Onoff'. 
typings/express/express.d.ts(14,1): error TS6053: File 'typings/serve-static/serve-static.d.ts' not found. 
typings/express/express.d.ts(28,34): error TS2307: Cannot find module 'serve-static'. 

非常感谢你!我不知道我做了什么错?

回答

1
  1. 从错误的描述来看,移动import外面你的模块应该解决您的问题:

    import * as express from "express"; 
    export module Onoff { 
        ... 
    } 
    
  2. 您导入模块作为onoff但试图用Onoff

    var onoff = require("./onoff"); 
        ^
    var computers: Onoff.Computer[] = []; 
          ^
    
+0

谢谢,固定日在onoff.ts错误,但不是其他错误。我相应地修改了这个问题。 – Databyte

+0

你导入你的模块作为'onoff',但正在尝试使用'Onoff' –

+0

如果我这样说,说'错误TS2305:模块''服务/ onoff''没有导出成员'计算机'..' – Databyte