2016-08-23 24 views
5

için bir bildiri dosyası yaz Genellikle (JavaScript) bu şekilde örneklenen alır RiveScript adlı bir npm modülü vardır:varsayılan bir ihracat modülü

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

Ben modülü için bir deklarasyon dosyası yazmaya çalışıyorum, ama ilk adımda sıkışıp kaldım. İşte ben bugüne kadar yazdım budur: Sonra

declare module "rivescript" { 

    interface RivescriptOptions { 
     utf8?: boolean; 
    } 

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

    export default RiveScript; 
} 

ben bu şekilde modülünü kullanarak olurdu daktilo tahmin (varsayılan ithalat):

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

Ancak tsc bu, üretir

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

yanlış yapıyorum: bir default() işlev başvuran olarak geçerli değil?

cevap

8

Gerçekten yakınsınız. export default kullanmak yerine, export = kullanmalısınız.

özel typings/

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

rivescript.d.ts beyan dosyalarını yazma konusunda daha fazla bilgi için

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

app.js, sen bir göz olmalıdır Typescript Handbook. Örneğin. template for 'exporting modules as a class' var.

+1

Çalışıyor, teşekkürler! Sadece içe aktarım RiveScript = gerektiren ('rivescript'), sözdizimi geçerli bir ES6 import ifadesi gibi görünmüyor mu? –

+0

Anladığım kadarıyla, 'rivescript' öğesinden Rivescript içe aktarma, Rivescript'in varsayılan dışa aktarılmasını içe aktarmalıdır. Ancak, hiçbir varsayılan ihracat yoktur: https://github.com/aichaos/rivescript-js/blob/master/src/rivescript.coffee#L963. Tam bir genel bakış için: https://github.com/Microsoft/TypeScript/issues/2242 –

+0

Tamam, teşekkürler! –