如何访问模块中的 TypeScript 定义?

How to access a TypeScript definition that is within a module?

我正在尝试输入 NodeJS definition 中描述的 'Url' 对象。但是 'Url' 对象是在 'url' 模块下描述的。因为它在模块下,编译器无法将其识别为有效类型。

///<reference path='../../../Definitions/node.d.ts' />
///<reference path='../../../Definitions/node-webkit.d.ts' />
///<reference path='../../../Definitions/cheerio.d.ts' />

var NodeUrl = require('url');

function findLinks($cheerio:Cheerio, internalOnly?:boolean, rootUrl?:url.Url):string[] {
    //url.Url is not recognised, neither is Url or NodeUrl.Url
}

定义文件定义了以下模块(连同 NodeJS 的其余部分):

declare module "url" {
    export interface Url {
        href: string;
        protocol: string;
        auth: string;
        hostname: string;
        port: string;
        host: string;
        pathname: string;
        search: string;
        query: any; // string | Object
        slashes: boolean;
        hash?: string;
        path?: string;
    }

    export interface UrlOptions {
        protocol?: string;
        auth?: string;
        hostname?: string;
        port?: string;
        host?: string;
        pathname?: string;
        search?: string;
        query?: any;
        hash?: string;
        path?: string;
    }

    export function parse(urlStr: string, parseQueryString?: boolean , slashesDenoteHost?: boolean ): Url;
    export function format(url: UrlOptions): string;
    export function resolve(from: string, to: string): string;
}

如何正确引用 Url 类型?

感谢您的帮助。

在 Typescript 中,您需要使用稍微不同的语法来导入模块:

import NodeURL = require('url');

您现在可以访问

NodeURL.Url