我正在尝试在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" });
});
}
答案 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