手工编码的Typescript定义文件的模块

时间:2015-11-25 19:31:18

标签: typescript

我在一个Typescript项目中使用https://github.com/23/resumable.js,并且我正在尝试为它设置一个类型定义文件,因为没有明确键入的文件。我的第一稿草稿是https://github.com/23/resumable.js/pull/264

使用此类型定义文件,我可以使用以下内容导入可恢复文件:

import Resumable = require('../../lib/resumable')

我也在项目中使用immutable.js,我可以从中导入属性:

import {OrderedMap} from 'immutable'

换句话说,不可变是一个模块。我已经尝试了各种方法在可恢复类型定义文件中声明一个模块,我可以让它进行编译 - 例如:

//.d.ts file
declare module 'resumable' {
    export class Resumable {...

//.ts file
import {Resumable} from 'resumable'

然后应用程序抛出关于Resumable不是函数的运行时错误。据我所知,这里的区别是resumable.js导出Resumable对象的构造函数,而Immutable(和jquery)导出工厂:

// Resumable
module.exports = Resumable; 

//Immutable
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ?    module.exports = factory() :
  typeof define === 'function' && define.amd ? define(factory) :
      global.Immutable = factory()
}(this, function () {

鉴于可恢复出口的方式,是否可以修改我的类型定义文件以将其导出为模块?

1 个答案:

答案 0 :(得分:0)

  

据我所知,resumable.js导出Resumable对象的构造函数,

正确的做法是使用export =,我发现这正是您所做的事情:https://github.com/matthewdenobrega/resumable.js/blob/008d0f1494f0a8e3ad96d4fac59b9ad9c96d6942/resumable.d.ts#L31