在TypeScript中扩充位于声明的命名空间中的接口

时间:2017-05-26 07:35:16

标签: angularjs typescript typescript-typings

我想在声明的角度命名空间内增加IHttpPromise<T>(来自“@ types / angular”)。这样我就可以写$http.then(...).myCustomMethod(...)

我只需编写代码即可轻松扩展全局上下文中的接口:

interface JQuery {
    $custom: string;
}

对于命名空间内的接口,显然不起作用。尝试了几件事,比如再次声明angular命名空间并将增强的界面放在里面,但是那些和其他许多变化都不起作用。

请注意,我没有使用(外部)模块。

1 个答案:

答案 0 :(得分:1)

找到解决方案。即使您没有使用模块,也必须在单独的声明文件中执行以下操作:

import { IHttpPromise } from '@types/angular';

declare module '@types/angular' {
    interface IHttpPromise<T> {
        myCustomMethod(): something;
    }
}

import语句的内容本身并不重要。我们必须进行导入以使TS将此文件视为一个模块,使其工作。所以这也会奏效:

import * as angular from '@types/angular';

最后记录了here