我想增强IHttpPromise<T>
在声明的 Angular 命名空间内(来自“@types/Angular”)。这样我就能写$http.then(...).myCustomMethod(...)
.
我只需编写以下内容即可轻松增强全局上下文中的接口:
interface JQuery {
$custom: string;
}
对于命名空间内的接口,同样的方法显然不起作用。尝试了几件事,比如声明angular
再次命名空间并将增强接口放入其中,但是该方法和其他许多变体都不起作用。
请注意,我没有使用(外部)模块。
找到了解决方案。即使您不使用模块,也必须在单独的声明文件中执行以下操作:
import { IHttpPromise } from '@types/angular';
declare module '@types/angular' {
interface IHttpPromise<T> {
myCustomMethod(): something;
}
}
导入声明的内容本身并不重要。我们必须进行导入以使 TS 将此文件视为模块才能正常工作。所以这也行得通:
import * as angular from '@types/angular';
这记录在最后here https://www.typescriptlang.org/docs/handbook/declaration-merging.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)