在Typescript中使用CommonJS模块中的类

时间:2016-01-31 21:25:33

标签: typescript npm commonjs

我有一个npm包,其文件类似于:

'use strict'

module.exports = class TModel {
  constructor (app) {
    this.app = app
  }

  static schema () {

  }
}

我想在这样的Typescript文件中使用它:

import Model from 't-model';

export class Book extends Model {
    static schema() : any {
        return {
            title: {
                type: 'string'
            }
        }
    }
}

但这不起作用。 PHPStorm给出错误:

  

无法解析文件

使用tsc进行编译会给出错误:

  

错误TS2307:无法找到模块' t-model'

如果使用't-model/index'代替't-model' PHPStorm停止向我发送错误,但tsc仍会出现相同的错误。

我正在尝试统一我将为后端API和使用Typescript的前端创建的包。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

  

有一个npm包,其文件类似于:

如果此文件是typescript

而不是:

module.exports = class TModel {

执行export class TModel并让TypeScript生成module.exports(使用module: commonjs编译)。这样TypeScript就可以理解导出

更多相关信息:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

如果文件是javascript

您需要声明

declare module 't-model' {
   class TModel // .....
   export = TModel;
}

更多相关信息:https://basarat.gitbooks.io/typescript/content/docs/types/migrating.html