打字稿CommonJS的继承

问题描述:

与TS玩耍,结果被卡在这个打字稿CommonJS的继承

"use strict"; 

declare const require: any; 

const EventEmitter : any = require('events').EventEmitter; 

class Foo extends EventEmitter{ //*error* Type 'any' is not a constructor function type. 

    constructor() { 
     super(); 
    } 
} 

我也试图分配EventEmitter矿的接口类型,这给了同样的错误。

如何扩展一个类,使用Typescript的commonjs模块?

谢谢

尝试

"use strict"; 

import { EventEmitter } from 'events'; 

class Foo extends EventEmitter { 
    constructor() { 
     super(); 
    } 
} 

您可能需要安装类型定义 '事件' 模块:

npm install --save @types/node


更新

你仍然可以做同样的require

"use strict"; 

import events = require('events'); 
const EventEmitter = events.EventEmitter; 

class Foo extends EventEmitter { 
    constructor() { 
     super(); 
    } 
} 

应避免在一般使用: any所以你可以使用的功能,如智能感知和编译时类型检查

+1

伟大的答案。也许添加一个笔记,说明为什么在这种情况下使用任何错误,一般情况不好? –

+0

非常感谢! 我真的很喜欢这种方法,但只是为了完成,'require'解决方案也可以使用诸如'node.d.ts'之类的东西,就像这里提到的那样 http://*.com/questions/18378503/importing- node-modules-with-typescript – xhallix

+0

@xhallix是的,你可以。我刚刚更新了答案。 –