2014-01-09 2 views
0

노드 응용 프로그램에서 함수 매개 변수 유형을 지정하려고합니다. 이것은 내가 생각 해낸 것입니다 :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에서오고있다. "표현식"은 .dts 파일에서

declare module "express" { 

으로 정의됩니다.

분명히 내가 잘못하고있다 .. 어떤 힌트?

EDIT : basarat의 대답을 확장하려면 csproj 파일에서 TypeScriptModuleKind 항목을 찾아서 COMMONJS로 설정하십시오.

import express = require("express"); 

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

답변

1

자바 스크립트 생성 외모처럼 :

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

당신이 --module amd로 컴파일되기 때문에

는 TS는 다음과 같이보고 끝났다. http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

PS : 노드에 대해 당신은 --module commonjs 참조를 사용해야 타이프 라이터가 명시 적 사용에 대해 알고 당신은 명시 적 타입 정의를 참조 할 필요가 : https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express-tests.ts#L77 정의 : https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express.d.ts