2016-08-23 8 views
5

Ich habe einen npm Modul RiveScript genannt, die in der Regel (in Javascript) auf diese Weise instanziiert werden:eine Deklarationsdatei schreibt für ein Standard-Exportmodul

var RiveScript = require('rivescript'); 
var rivescript = new RiveScript(); 

Ich versuche, eine Deklarationsdatei für das Modul zu schreiben, aber ich stecke beim ersten Schritt fest. Hier ist, was ich bisher geschrieben:

declare module "rivescript" { 

    interface RivescriptOptions { 
     utf8?: boolean; 
    } 

    class RiveScript { 
     constructor(options?: RivescriptOptions); 
    } 

    export default RiveScript; 
} 

Dann habe ich in Typoskript denke, ich würde das Modul diese Art und Weise werden (Standard-Import):

import RiveScript from 'rivescript'; 
let rivescript = new RiveScript(); 

erzeugt jedoch tsc dies, die nicht gültig ist, da es eine default() Funktion verweist:

const rivescript_1 = require('rivescript'); 
let rivescript = new rivescript_1.default(); 

Was mache ich falsch?

Antwort

8

Sie sind wirklich nah dran. Anstatt export default zu verwenden, sollten Sie export = verwenden.

custom-Typisierungen/rivescript.d.ts

declare module 'rivescript' { 
    class RiveScript { 
    constructor() 
    } 
    export = RiveScript 
} 

app.js

import RiveScript = require('rivescript'); 
let rivescript = new RiveScript(); 

Weitere Informationen darüber, wie Deklarationsdateien zu schreiben, sollten Sie einen Blick auf die Typescript Handbook. Z.B. Sie haben eine template for 'exporting modules as a class'.

+1

Es funktioniert, danke! Ich bin nur verwirrt durch die Tatsache, dass das 'RiveScript importieren = require ('rivescript');' -Syntax nicht wie eine gültige ES6-Importanweisung aussieht? –

+0

Soweit ich verstehe, sollte 'Import Rivescript von 'rivescript' 'den Standard-Export von Rivescript importieren. Es gibt jedoch keinen Standardexport: https://github.com/aichaos/rivescript-js/blob/master/src/rivescript.coffee#L963. Für einen vollständigen Überblick: https://github.com/Microsoft/TypeScript/issues/2242 –

+0

Ok, hab es, danke! –

Verwandte Themen