我正在开发一个Angular 5项目。我引用了从NPM下载的第三方库(odata-v4-ng)。我需要在这个库中扩充一个类来添加一些方法。该类声明如下。
export declare class ODataQuery extends ODataQueryAbstract {
// methods omitted for brevity
}
我试图以这种方式扩充课程:
import { ODataQuery } from 'odata-v4-ng';
declare module 'odata-v4-ng' {
interface ODataQuery {
test();
}
}
ODataQuery.prototype.test = () => { };
问题在于编译器会抛出"' ODataQuery'仅指类型,但在此处用作值。"。如果我在Angular项目中创建一个类并以这种方式扩充它,一切正常。
有什么想法吗?
答案 0 :(得分:1)
该特定类在另一个模块中定义,仅由主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 = () => { };