Menu
Coddy logo textTech

まとめ:高度な型の組み合わせ

CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 36/73。

challenge icon

チャレンジ

簡単

statusプロパティがリテラル型"success"で、dataプロパティがany型であるオブジェクトの型エイリアスSuccessを作成してください。

statusプロパティがリテラル型"error"で、messageプロパティがstring型であるオブジェクトの型エイリアスFailureを作成してください。

Success型とFailure型のユニオン型である型エイリアスResultを作成してください。

Result型のresultという名前のパラメータを受け取り、stringを返すprocessResultという名前の関数を作成してください。この関数は、statusプロパティに対して型ガードを使用して結果の型を判定し、以下のように動作する必要があります。

  • statusが"success"の場合、"Operation successful: [data]"を返します。
  • statusが"error"の場合、"Operation failed: [message]"を返します。

Result型のresponseという名前のパラメータを受け取り、booleanを返すhandleApiResponseという名前の別の関数を作成してください。この関数は、操作が成功した場合はtrueを、失敗した場合はfalseを返す必要があります。

以下の入力が提供されます:

  • 1番目の入力:{"status": "success", "data": "User created"}のような成功結果、または{"status": "error", "message": "Invalid credentials"}のような失敗結果を表すJSON文字列。
  • 2番目の入力:同じ形式の別のJSON文字列。

両方のJSON入力をResultオブジェクトとしてパースし、以下の処理を行ってください:

  • 1番目にパースされた結果でprocessResultを呼び出し、返された文字列を出力します。
  • 1番目にパースされた結果でhandleApiResponseを呼び出し、返された真偽値を出力します。
  • 2番目にパースされた結果でprocessResultを呼び出し、返された文字列を出力します。
  • 2番目にパースされた結果でhandleApiResponseを呼び出し、返された真偽値を出力します。

自分で試してみよう

import * as readline from 'readline';

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

const input: string[] = [];

// TODO: ここにコードを書いてください
// 1. Success、Failure、および Result の型エイリアスを作成します

// 2. processResult 関数を作成します

// 3. handleApiResponse 関数を作成します

rl.on('line', (line: string) => {
    input.push(line.trim());
    if (input.length === 2) {
        // JSON 入力をパースします
        const result1 = JSON.parse(input[0]);
        const result2 = JSON.parse(input[1]);
        
        // 4. パースされた結果を使用して関数を呼び出し、出力を表示します
        
        
        rl.close();
    }
});

Introduction To TypeScriptのすべてのレッスン

自分で練習してみよう: JavaScriptオンラインコンパイラ