Menu
Coddy logo textTech

요약: 고급 타입 조합

Coddy JavaScript 여정의 TypeScript 소개 섹션에 포함된 레슨. 73개 중 36번째.

challenge icon

챌린지

쉬움

status 속성이 리터럴 타입 "success"이고 data 속성이 any 타입인 객체에 대해 Success라는 이름의 타입 별칭을 생성하세요.

status 속성이 리터럴 타입 "error"이고 message 속성이 string 타입인 객체에 대해 Failure라는 이름의 타입 별칭을 생성하세요.

SuccessFailure 타입의 유니온인 Result라는 이름의 타입 별칭을 생성하세요.

Result 타입의 result라는 매개변수를 받고 string을 반환하는 processResult라는 이름의 함수를 생성하세요. 이 함수는 status 속성에 타입 가드를 사용하여 결과 타입을 결정하고 다음과 같이 동작해야 합니다:

  • 상태가 "success"인 경우, "Operation successful: [data]"를 반환합니다.
  • 상태가 "error"인 경우, "Operation failed: [message]"를 반환합니다.

Result 타입의 response라는 매개변수를 받고 boolean을 반환하는 handleApiResponse라는 이름의 또 다른 함수를 생성하세요. 이 함수는 작업이 성공적이면 true를, 실패하면 false를 반환해야 합니다.

다음과 같은 입력이 제공됩니다:

  • 첫 번째 입력: {"status": "success", "data": "User created"}와 같은 성공 결과 또는 {"status": "error", "message": "Invalid credentials"}와 같은 실패 결과를 나타내는 JSON 문자열
  • 두 번째 입력: 동일한 형식의 또 다른 JSON 문자열

두 JSON 입력을 Result 객체로 파싱한 후, 다음을 수행하세요:

  • 첫 번째 파싱된 결과를 사용하여 processResult를 호출하고 반환된 문자열을 출력합니다.
  • 첫 번째 파싱된 결과를 사용하여 handleApiResponse를 호출하고 반환된 불리언 값을 출력합니다.
  • 두 번째 파싱된 결과를 사용하여 processResult를 호출하고 반환된 문자열을 출력합니다.
  • 두 번째 파싱된 결과를 사용하여 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();
    }
});

TypeScript 소개의 모든 레슨

직접 연습해 보세요: 온라인 JavaScript 컴파일러