将库作为TypeScript中的参数传递,并键入定义内部模块

时间:2015-01-08 22:45:44

标签: typescript

我已经开始使用TypeScript进行编程了,在某些情况下我对如何定义参数类型感到有些困惑。

这里是:

::::代码::::

// First the references to TypeScript definition files used by the src code
/// <reference path="../lib/express.d.ts"/>;
/// <reference path="../lib/request.d.ts"/>;

// Import modules for the sake of using TypeScript
import express = require('express');
import request = require('request');

var getUuidFromCouchDb = function (httpReq: any, expressRes: express.Response) {
    // Load module/function that parses JSON
    var parseJsonFromRequestWithCheck = require('./parseJsonFromRequestWithCheck');

    // Get a UUID from CouchDB which we can use to create a new document in the database
    httpReq.get('http://127.0.0.1:5984/_uuids', function (httpReqError: any, httpReqRes: any, httpReqBody: any) {
        var resBodyAsJson: JSON = parseJsonFromRequestWithCheck(httpReqBody, expressRes);

        // Do checks on resBodyAsJson
        if (resBodyAsJson && resBodyAsJson.uuids && resBodyAsJson.uuids.length > 0) {
            // UUID in JSON format received from CouchDB - return it to the client
            expressRes.json(resBodyAsJson);
            return;
        } else {
            // Parsing of JSON likely failed in parseJsonFromRequestWithCheck or     malformed data retrieved
            expressRes.sendStatus(500);
            return;
        }
    });
}

module.exports = getUuidFromBackend;

所以问题是: - 我想定义&#34; httpReq&#34;的类型。参数为&#34;类型&#34; &#34;请求&#34;图书馆。这可能完全是 - 如果是这样,那么为该参数定义类型的正确方法是什么。使用&#34;任何&#34;只觉得很松散。 - 对于变量&#34; parseJsonFromRequestWIthCheck我还想为它定义一个类型。它是一个提供Express JS响应的模块。无论是在JSON中还是在发送状态时,解析JSON失败。这与Express JS响应的sendStatus方法有关。这样做的正确方法是什么?

期待收到你的来信....

非常感谢你......

1 个答案:

答案 0 :(得分:0)

  

我想定义&#34; httpReq&#34;的类型。参数为&#34;类型&#34; &#34;请求&#34;文库

而不是httpReq: any,您将拥有httpReq: typeof request

  

对于变量&#34; parseJsonFromRequestWIthCheck我还想为其定义一个类型。

而不是var parseJsonFromRequestWithCheck,您将拥有import parseJsonFromRequestWithCheck

要详细了解TypeScript模块系统中的importhttps://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1