使用TypeScript指定函数参数的类型

时间:2014-01-09 01:16:37

标签: node.js typescript

我正在尝试在Node应用程序中指定函数参数类型。这就是我想出的:

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”定义为

declare module "express" {
<。>在.d.ts文件中。

显然我做错了..有什么提示吗?

编辑: 要扩展basarat的答案: 在csproj文件中找到TypeScriptModuleKind条目,并将其设置为COMMONJS。

ts最终看起来像这样:

import express = require("express");

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

1 个答案:

答案 0 :(得分: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:您需要引用TypeScript的快速类型定义来了解快速用法:https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express-tests.ts#L77定义:https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express.d.ts

相关问题