2014-01-09 3 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. «экспресс» определяется как

declare module "express" { 

в файле .d.ts.

Очевидно, я делаю это неправильно .. Любые намеки?

EDIT: Чтобы развернуть ответ на basarat: В файле csproj найдите запись TypeScriptModuleKind и установите ее в COMMONJS.

В Т.С. кончались глядя, как это:

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

Смежные вопросы