2014-01-09 75 views
0

我試圖在Node應用程序中指定函數參數類型。這是我想出了:使用TypeScript指定函數參數的類型

import express = require("express"); 

module.exports = (app) => { 
    app.get('/', (req: express.Request, res: express.Response) => { // <- this fails to compile 
     // do work 
    }); 
} 

,併產生這個JS,這是不完全正確,顯然:

define(["require", "exports"], function(require, exports) { 
    module.exports = function (app) { 
     //...... 
    }; 
}); 

TS定義是從DefinitelyTyped到來。 「express」被定義爲在.d.ts文件中的

declare module "express" { 

顯然我做錯了..任何提示?

編輯: 要擴大basarat的回答是: 在的csproj文件中找到TypeScriptModuleKind項,並將其設置爲CommonJS的。

的TS結束這樣看:

import express = require("express"); 

module.exports = (app: express.Application) => { 
    app.get("/", (req, res) => { 
     res.send({ name: "woohooo" }); 
    }); 
} 

回答

1

產生JavaScript的模樣:

define(["require", "exports"], function(require, exports) { 
    module.exports = function (app) { 
     //...... 
    }; 
}); 

,因爲你與--module amd編譯。對於節點應該使用--module commonjs見:http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

PS:你需要引用明確類型定義爲打字稿瞭解快遞用法:https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express-tests.ts#L77定義:https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express.d.ts