在 Typescript 中使用 CommonJS 模块中的 class

Use class from CommonJS module in Typescript

我有一个 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 给出错误:

Cannot resolve file

使用 tsc 编译时出现错误:

error TS2307: Cannot find module 't-model'

如果使用 't-model/index' 而不是 't-model' PHPStorm 停止给我一个错误,但 tsc 仍然给出同样的错误。

我正在尝试统一我为后端 API 和使用 Typescript 的前端制作的包。有办法吗?

have an npm package with a file similar to this:

如果这个文件是打字稿

而不是:

module.exports = class TModel {

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

更多相关信息: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