✔︎Pickup
nodeで対話型プログラムを作成する方法

久々にデバッグツールを作りたく思い、簡単なサンプルプログラムを作成してみました

作りたいプログラム

今回はTypeScriptで対話型プログラムを作成してみたいと思います。

C言語ではよくあるコマンドプロンプトに文字入力を受け付けて,入力された文字に対する結果を返すような対話型のサンプルプログラムを作ってみます。

環境

node

TypeScript

プログラムのイメージ

コマンドラインに入力された文字をそのまま出力するプログラムを作成したいと思います。

使うパッケージ

    "@types/node": "18.11.13",

    "ts-node": "10.9.1",

    "typescript": "4.9.4"

ソースコード

import * as readline from "readline";

class Repl {
  rl: readline.Interface;

  constructor() {
    this.rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
    });
  }
  async start(prompt = "> ") {
    while (1) {
      await this.readSyncLine(prompt, async (text) => {
        if (text !== "") {
          console.log(text);
          return;
        }
      });
    }
  }

  async readSyncLine(
    prompt: string,
    cb: (text: string) => void
  ): Promise<void> {
    return new Promise((resolve) => {
      this.rl.question(prompt, (answer) => {
        cb(answer);
        resolve();
      });
    });
  }
}

const r = new Repl();

r.start();

今回はこのように書いてみました。

必要最低限のコードで書いてみましたので,対話型の機能を追加したい時に別ファイルでこのプログラムを組み込めば簡単に実装することが可能です。

C言語だとこのようなプログラムを作るのが最初の課題になりそうですが,TypeScriptでは20行程度のプログラムになりました。

debug機能や他の対話型プログラムと会話させたりなどすると面白いことができるかもしれません

ブログ村リンク
ポチッと押してね!フォローもしてね!

ブログランキング・にほんブログ村へ
にほんブログ村
おすすめの記事