我正在开发一个 Angular 5 项目。我引用了从 NPM (odata-v4-ng) 下载的第三方库。我需要在这个库中扩充一个类来添加一些方法。该类是这样声明的。
export declare class ODataQuery extends ODataQueryAbstract {
// methods omitted for brevity
}
我试图通过这种方式扩充类(class):
import { ODataQuery } from 'odata-v4-ng';
declare module 'odata-v4-ng' {
interface ODataQuery {
test();
}
}
ODataQuery.prototype.test = () => { };
问题是编译器会抛出“'ODataQuery' 只引用一个类型,但在这里被用作一个值。”。如果我在我的 Angular 项目中创建一个类并以这种方式扩充它,一切正常。
有什么想法吗?
最佳答案
该特定类在另一个模块中定义,并且仅由主 odata-v4-ng
模块重新导出。如果您扩展定义类的实际模块,一切似乎都可以正常工作:
import { ODataQuery } from 'odata-v4-ng';
declare module './node_modules/odata-v4-ng/src/app/odata/odata-query/odata-query' {
export interface ODataQuery {
test():void
}
}
ODataQuery.prototype.test = () => { };
关于angular - 增强第三方库 Typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49589241/