angular - Utöka tredjepartsbibliotek Typescript
Jag utvecklar ett Angular 5-projekt. Jag har refererat till ett tredjepartsbibliotek som laddats ner från NPM (odata-v4-ng). Jag behöver utöka en klass inuti detta bibliotek för att lägga till några metoder. Klassen är deklarerad så här.
export declare class ODataQuery extends ODataQueryAbstract {
// methods omitted for brevity
}
Jag har försökt att utöka klassen på detta sätt:
import { ODataQuery } from 'odata-v4-ng';
declare module 'odata-v4-ng' {
interface ODataQuery {
test();
}
}
ODataQuery.prototype.test = () => { };
Problemet är att kompilatorer kastar fel och säger "'ODataQuery' refererar endast till en typ, men används som ett värde här.". Om jag skapar en klass i mitt Angular-projekt och förstärker den på detta sätt, fungerar allt bra.
Någon idé?
Svar #1
Den specifika klassen är definierad i en annan modul och exporteras bara på nytt av huvudmodulen odata-v4-ng. Om du utökar den faktiska modulen där klassen är definierad verkar allt fungera bra:
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 = () => { };
