我想在声明的角度命名空间内增加IHttpPromise<T>
(来自“@ types / angular”)。这样我就可以写$http.then(...).myCustomMethod(...)
。
我只需编写代码即可轻松扩展全局上下文中的接口:
interface JQuery {
$custom: string;
}
对于命名空间内的接口,显然不起作用。尝试了几件事,比如再次声明angular
命名空间并将增强的界面放在里面,但是那些和其他许多变化都不起作用。
请注意,我没有使用(外部)模块。
答案 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。