增加第三方库的Typescript

时间:2018-03-31 15:13:36

标签: angular typescript

我正在开发一个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项目中创建一个类并以这种方式扩充它,一切正常。

有什么想法吗?

1 个答案:

答案 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 = () => { };