2017-10-16 3 views
2

Ich habe gerade eine veröffentlichte npm-Paket zum ersten Mal erstellt, namens "Foo". Ich versuche, es in einem Typoskript-Projekt zu konsumieren, aber mir ist kein Tutorial über die Deklaration von Modulen mit benutzerdefinierten Typisierungen klar. Hier sind die wichtigsten Teile des NPM-Paket:Erstellen Sie eine benutzerdefinierte Typisierungsdatei

news.ts

import { tdsRequest } from "../common/request"; 

function articles(uri) { 
    return tdsRequest({ method: "GET" }, uri).then(returnData => console.log(returnData, "return data")); 
} 

export { 
    articles, 
}; 

main.ts (Hauptexport)

import * as news from "./services/news"; 

export default { 
    news 
}; 

im Typoskript Projekt, das die npm Paket ist raubend: import { news } from "Foo";

und in der Typisierungsdatei (Foo.d.ts) habe ich:

declare module "Foo" { 
    export { 
     news: Object, 
    }; 
} 

ich folgende Fehler: cannot find module news und Cannot export 'Object'. Only local declarations can be exported from a module.

Antwort

2

Sie sind Standard-Misch- und benannte Exporte.

können Sie tun Standardexport Stil -

main.ts:

import * as news from "./services/news"; 

export default { 
    news 
}; 

ts Projektimport:

import foo from "Foo"; 
const {news} = foo; 

foo.d.ts:

declare module "Foo" { 
    export default { 
     news: Object, 
    }; 
} 

main.ts:

import * as news from "./services/news"; 

export { 
    news 
}; 

ts Projektimport:

import {news} from "Foo"; 

foo.d.ts:

declare module "Foo" { 
    export const news: Object; 
} 

Oder Sie können genannt Exporte tun

Aber noch wichtiger, Sie sollten declaration: true zu Ihrem compilerOptions in tsconfig.json in Ihrer npm-Bibliothek hinzufügen.

Dies wird die d.ts Datei für Sie generieren und sparen Sie viel Arbeit. Dann müssen Sie package.json ein Feld namens types hinzufügen, das auf die main.d.ts Datei zeigt, die für Sie generiert wird. Dies ermöglicht jedem Projekt, das Ihre Bibliothek + Typoskript verwendet, die generierten Typen automatisch zu verwenden.

Verwandte Themen