2017-02-24 6 views
2

は、TSで遊んでいたと私も同じエラーを与えた私のインターフェイスタイプにEventEmitterを割り当てようとしました。この活字体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(); 
    } 
} 

で捕まってしまいました。

Typescriptを使用してcommonjsモジュールでクラスを拡張するにはどうすればよいですか?

答えて

3

あなたは 'イベント' モジュールの型定義をインストールする必要があり

"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(); 
    } 
} 

あなたはインテリセンスと

+1

グレート答えをチェックし、コンパイル時の型などの機能を使用できるようにするには、一般的に: anyを使用しないでください。たぶん、この場合はいずれかが間違っていると一般的に悪いを使用してノートを追加しますか? –

+0

ありがとう! 私はこのアプローチが本当に好きですが、完了のためだけに、ここで言及されているように、 'node.d.ts'のようなものを使って' require'ソリューションも可能になるでしょうか http://stackoverflow.com/questions/18378503/importing- node-modules-with-typescript – xhallix

+0

@xhallixはい、できます。私はちょうどその答えを更新しました。 –