티스토리 뷰

다들 건강하신가요 동기 여러분! 오늘은 유니온 타입의 마지막 시간으로 리터럴 유니온 타입에 대해 알아봅시다.

영어를 사용하는 외국인들을 관찰(?) 아니.. 음 그들의 이야기를 잘 들어보면 A~~ , the a~~ , though, literally 라는 말을 엄청 많이 사용하는데 literally의 형용사형이 바로 literal입니다. 뜻은 '글자 그대로의'입니다. 뜻을 유념하며 오늘의 포스팅 시작합니다!

 

Unions with Literal Types

리터럴 유니온 타입은 뚜렷한 상태를 프로그램으로 만들 때 상당히 유용합니다. 

 

 


 

생김새와 사용방법

type DragoonQuotation = 'trained' | 'selected' | 'confirming order' | 'repeatedly selected';

function whatDragoonSays(dragoonQuotation: DragoonQuotation) { 
 // 함수 내용~~~ 
}
  • type 적고 타입명을 작성하고 뚜렷한 상태들('trained' | 'selected' | 'confirming order' | 'repeatedly selected')을 열거하면 됩니다.
  • 그리고 함수를 만들어서 매개 변수에 타입을 선언(주석 달기)해주면 끝입니다!

 


 

If문을 사용하여 함수 완성하기 (스타크래프트1 드라군의 대사)

type DragoonQuotation = 'trained' | 'selected' | 'confirming order' | 'repeatedly selected';

function whatDragoonSays(dragoonQuotation: DragoonQuotation) { 
    if(dragoonQuotation === 'trained') {
        console.log('I have returned.');
    }

    if(dragoonQuotation === 'selected') {
        let selectedQuo = ['Receiving.', 'Awaiting instructions.', 'transmit', 'Input command.', 'Galahoslos?', 'Za Khaladas.', 'Make use of me', 'I am needed?'];
        let i = Math.floor(Math.random() * selectedQuo.length);
        console.log(selectedQuo[i]);
    }

    if(dragoonQuotation === 'confirming order') {
        let confirmingOrderQuo = ['Confirmed.', 'Initiating.', 'Lokh-tai', 'Metonah.', 'Commencing', 'Nagat Zuul.', 'For vengeance.'];
        let j = Math.floor(Math.random() * confirmingOrderQuo.length);
        console.log(confirmingOrderQuo[j]);
    }

    if(dragoonQuotation === 'repeatedly selected') {
        let repeatedlyQuo = ['Unauthorized transmission', 'Incorrect protocol.', '(warning beep) Drop your weapon! You have 15 seconds to comply.', 'Five... Four... Three. Two. One! (fires phase disruptor)'];
        let k = Math.floor(Math.random() * repeatedlyQuo.length);
        console.log(repeatedlyQuo[k]);
    }
}

whatDragoonSays('trained');
whatDragoonSays('selected');
whatDragoonSays('confirming order');
whatDragoonSays('repeatedly selected');
  • 함수 whatDragoonSays를 만들어 매개 변수 dragoonQuotation의 타입은 DragoonQuotation으로 설정해두었습니다.
  • 만약 dragoonQuotation이 타입 'trained'라면 'I have returned'를 출력합니다.
  • 만약 dragoonQuotation이 타입 'selected'라면 배열 seletedQuo중 한 요소를 랜덤으로 뽑아서 출력합니다.
  • 만약 dragoonQuotation이 타입 'confirming order'라면 배열 confirmingOrderQuo중 한 요소를 랜덤으로 뽑아서 출력합니다.
  • 만약 dragoonQuotation이 타입 'repeatedly selected'라면 배열 repeatedlyQuo중 한 요소를 랜덤으로 뽑아서 출력합니다.
  • 그 아래는 각 타입에 따른 함수 호출입니다.

 

컴파일링과 실행해보기

1. 컴파일링

오류 없이 넘어갑니다.

 

2. 실행

 

독립 변수가 'trained'는 'I have returned'가 출력되고 나머지는 랜점으로 잘 출력됩니다. 

 


 

오늘의 느낌

스타크래프트 레이쓰 성대모사 'Wraith awaiting launch orders.' 계속 연습하다 보니까 이제 발음이 자연스럽게 된다!!!

'TypeScript' 카테고리의 다른 글

[TypeScript] Using in with Type Guards  (0) 2022.01.21
[TypeScript] Type guards  (0) 2022.01.21
[TypeScript] Common Key Value Pairs  (0) 2022.01.20
[TypeScript] Unions and Arrays  (0) 2022.01.20
[TypeScript] Inferred Union Return Types  (0) 2022.01.20
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함