2017-09-13 20 views
1

私はtsc -v 2.4.2とノードv6.10.3を持つTypeScriptの小さなプロジェクトに取り組んでいます。TypeScript + NodeJS readlineプロパティがありません

私はimport * as readline from 'readline'を試しましたが、その後readline.emitKeyPressEvents(process.stdin)を使用しましたが、という文句を言います。

npm install --save @types/nodeも行っています。ここで

はM(N)WEです:

import * as readline from "readline"; 
import {SIGINT} from "constants"; 

export class InputManager 
{ 
    private _currentStates: Array<IKeyEntity>; 
    private _oldStates: Array<IKeyEntity>; 

    public constructor() 
    { 
     // Throws error, won't compile 
     readline.emitKeyPressEvents(process.stdin); 
    } 

    public handleInput() 
    { 
     if (process.stdin.isTTY) 
      process.stdin.setRawMode(true); 

     process.stdin.on('keypress', (str: string, key: any) => { 
      process.stdout.write('Handling keypress ['+str+']'); 

      if (key && key.ctrl && (key.name == 'c' || key.name == 'l')) 
      { 
       process.kill(process.pid, SIGINT); 
      } 
     }); 
    } 
} 

答えて

2

方法は、確かにnodeタイピングから欠落しています。その正しい名前は実際にはemitKeypressEvents(小文字のp)ですが、その名前もありません。私はこれが簡単な見落としだと思うので、私はPRを、DefinitelyTypedに加えて提出しました。 (すべてがうまくいけば、一週間前後)これは、処理に時間がかかるかもしれませんが、平均時間で、あなたはInputManager含むファイルをローカルでの宣言を追加することで、あなたのコードをチェック入力することができます:それは少しかかりました

declare module 'readline' { 
    export function emitKeypressEvents(stream: NodeJS.ReadableStream, interface?: ReadLine): void; 
} 
+0

'@ types/node @ 8.0.36'は今日リリースされ、' emitKeypressEvents'を含みます。 – Oblosys

関連する問題