I have a simple npm module, emitter20, that I am trying to add type definitions to. Here is all 20 lines of its source:
module.exports = function() { var subscribers = [] return { on: function (eventName, cb) { subscribers.push({ eventName: eventName, cb: cb }) }, trigger: function (eventName, data) { subscribers .filter(function (subscriber) { return subscriber.eventName === eventName }) .forEach(function (subscriber) { subscriber.cb(data) }) } } } Here is the index.d.ts file in the emitter20 project root:
declare module 'emitter20' { interface IEmitter { on: (eventName: string, cb: (data?: any) => void) => void; trigger: (eventName: string, data?: any) => void; } interface EmitterFactory { new(): IEmitter; } export = IEmitter; } I have also tried this:
declare module 'emitter20' { export interface IEmitter { on: (eventName: string, cb: (data?: any) => void) => void; trigger: (eventName: string, data?: any) => void; } export interface EmitterFactory { new(): IEmitter; } } I try to import it into my project like this:
import IEmitter = require('emitter20') export interface SwapManager extends IEmitter { manager: any; } but I get the following error:
error TS2656: Exported external package typings file './node_modules/emitter20/index.d.ts' is not a module. Please contact the package author to update the package definition. How do I define and import the type definition for the emitter20 module?
(Aside: Typescript imports/exports... one hell of a learning curve!)