如何在没有声明文件的情况下从其他js文件扩展类

时间:2017-07-01 03:41:48

标签: javascript node.js typescript

第3个Javascript Lib

// publish at npm event-emitter
export default class EventEmitter{
  emit(){
    // do something
  }
  on(){
    // do something
  }
}

打字稿文件

import EventEmitter from 'event-emitter';

class Http extends EventEmitter{
  constructor() {
    super();
    this.emit(); // error TS2339: Property 'emit' does not exist on type 'Http'
  }
}

错误TS2339:属性'发出'在' Http'

类型中不存在

问题是:如果没有index.d.ts文件,如何扩展这个类?

我用webpack构建它。当我建立成功。 我发现导入eventEmitter来自' event-emitter&#39 ;; 等于undefined。

1 个答案:

答案 0 :(得分:1)

为了抑制类型检查错误,您需要向TypeScript提供声明文件。如果你使用流行的npm包,那么你可以在DefinitelyTyped找到它的包含的几率非常高。

您可以从他们的npm @typings私有软件包中为TypeScript 2.x安装DefinitelyTyped类型,或者使用TypeScript 1.x的typings软件包管理器。

示例:

// for TypeScript 2.x or you can still use typings
npm install @types/angularjs

// for TypeScript 1.x
npm install -g typings
typings install angularjs --save

如果您无法找到包裹的打字,您可以轻松编写。只需按照how to write declaration files上的TypeScript文档中的指南操作即可。

之后,随时发布它们!社区将非常感激。

干杯!