Hello World

Hello World

튜토리얼 연습 문제

소개

“Hello, World!”를 풀면서 TypeScript 코드를 작성해 보고, Exercism의 진행 방식도 익힐 수 있어요. 이 연습 문제를 완료하면 TypeScript 트랙의 나머지 문제가 잠금 해제돼요.

시작하려면 "Hello, World 소개" 영상을 봐요 👇

지침

고전적인 입문 연습 문제예요. 그냥 "Hello, World!"라고 출력해 봐요.

"Hello, World!"는 새로운 언어나 환경에서 프로그래밍을 시작할 때 작성하는 전통적인 첫 프로그램이에요.

목표는 간단해요:

  • 제공된 코드를 수정해서 "Hello, World!"라는 문자열을 출력하도록 만들어 봐요.
  • 테스트 모음을 실행하고 통과하는지 확인해 봐요.
  • 풀이를 제출하고 웹사이트에서 확인해 봐요.

모든 것이 잘 풀리면, 첫 번째 실제 연습 문제를 받아볼 준비가 된 거예요.

설정

TypeScript 설정 안내를 따라 필요한 의존성을 설치해요:

https://exercism.org/docs/tracks/typescript/installation

요구 사항

연습 문제 의존성을 설치해요:

$ yarn install

테스트 스위트 통과시키기

다음 명령으로 테스트를 실행해요:

$ yarn test

많은 테스트 스위트에서 첫 번째 테스트를 제외한 나머지 테스트는 건너뛴 상태예요.

테스트 하나를 통과시키면, xit를 it로 바꿔 다음 테스트의 건너뛰기를 해제할 수 있어요.

튜토리얼

이 섹션은 이 연습 문제를 푸는 단계별 안내예요.

이 연습 문제에는 두 개의 파일이 있어요:

  • hello-world.ts
  • hello-world.test.ts

첫 번째 파일에는 코드를 작성해요. 두 번째 파일에는 테스트가 정의되어 있어요.

테스트는 코드가 올바르게 동작하는지 확인해요. 테스트 스위트를 처음부터 작성할 줄 알아야 하는 것은 아니지만, 테스트가 어떤 모습이고 무엇을 하는지 이해하면 도움이 돼요.

테스트 파일 hello-world.test.ts를 열어 봐요. 그 안에는 테스트가 하나 있어요:

it('says hello world', () => {
  expect(hello()).toEqual('Hello, World!')
})

이제 다음 명령으로 명령줄에서 테스트를 실행해 봐요:

$ yarn test

아직 코드를 작성하지 않았으니 테스트가 실패하는 것은 당연해요.

실패 메시지는 다음과 같아요:

    × says hello world (5ms)

  ● Hello World › says hello world

    expect(received).toEqual(expected) // deep equality

    Expected: "Hello, World!"
    Received: "Goodbye, Mars!"

      4 |
      5 |   it('says hello world', () => {
    > 6 |     expect(hello()).toEqual('Hello, World!')
        |                     ^
      7 |   })
      8 |
      9 | })

      at Object.it (hello-world.test.ts:6:32)

그리고 다음은 hello-world.test.ts 파일에서 문제가 있을 가능성이 있는 코드 줄이에요:

6번째 줄:

    expect(hello()).toEqual('Hello, World!')
                    ^

따라서 문제는 hello() 함수 호출에 있어요. 테스트는 출력으로 'Hello, World!'를 기대하지만, 대신 "Goodbye, Mars!"를 받고 있다는 것을 알 수 있어요.

이제 hello-worlds.ts 파일에서 이 함수를 확인해 봐요:

export function hello(): string {
  return 'Goodbye, Mars!'
}

이제 함수가 잘못된 문자열을 반환하고 있고, 그것이 실패의 원인이라는 것을 알 수 있어요. 반환값을 바꿔서 고쳐 봐요:

export function hello(): string {
  return 'Hello, World!'
}

다시 테스트를 실행해 봐요:

 PASS  ./hello-world.test.ts
  Hello World
    √ says hello world (4ms)

그리고 통과해요!

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
TypeScript Exercism

Hello World 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 TypeScript 트랙을 연습 문제 108개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.