Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
890 views
in Technique[技术] by (71.8m points)

typescript - Write a declaration file for a default export module

I have a npm module called RiveScript that usually (in Javascript) gets instantiated that way:

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

I'm trying to write a declaration file for the module, but am stuck at the first step. Here's what I've written so far:

declare module "rivescript" {

    interface RivescriptOptions {
        utf8?: boolean;
    }

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

    export default RiveScript;
}

Then I guess in Typescript I would be using the module this way (default import):

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

However, tsc generates this, which is not valid as it references a default() function:

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

What am I doing wrong?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You're really close. Instead of using export default, you should use export =.

custom-typings/rivescript.d.ts

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

app.js

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

For more info on how to write declaration files, you should have a look at the Typescript Handbook. Eg. they have a template for 'exporting modules as a class.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...