유니온 사용 이유가 헷갈려요 ㅠㅜ
472
작성한 질문수 7
typescript 입문하기가 너무 어려웠는데 선생님 덕분에 차츰차츰 배우고 있는 학생이에요!
인터페이스 Developer와 Person의 공통 멤버인 name만 사용할 수 있다고 하셨는데
유니온을 왜 사용하는건지 감이 잘 안와요.. name 하나만 사용할거면 타입을 하나만 정해도 되는거 아닌가요? 보통 뭘 할때 많이 사용 되는 개념인지 예시 하나만 들어주실 수 있으신가요?? ㅠㅜㅠ
답변 2
3
안녕하세요 코딩왕 챡씨님, 예나님, 좋은 질문해 주셨네요 :) 저도 처음 유니온 타입과 인터섹션 타입을 접했을 때 타입 추론 관점에서 헷갈리는 부분들이 많았어요. 지금은 타입스크립트가 많이 편해진 상황에서 유니온 타입을 바라보면 참 좋은 문법이구나 라는 생각이 많이 듭니다 :)
유니온 타입의 가장 큰 장점이자 실제로 많이 활용되는 사례는 아래와 같이 하나의 변수에 여러 개의 타입을 정의하고 싶은 경우입니다.
위 코드에서 사용한 type은 타입 별칭이라고 하는건데 강의 뒤쪽에 소개가 되어 있어요. 첫 번째 줄에서 ProjectId라는 타입을 정의하는데 그 타입은 유니온 타입을 이용해서 string과 number를 모두 받을 수 있게 정의하였습니다.
그리고나서 아래 코드를 보시면 newProjectId와 oldProjectId에 첫 번째 줄에서 정의한 ProjectId 타입을 지정했어요. 그래서 newProjectId에서는 숫자를 정의할 수 있고 oldProjectId는 문자를 정의할 수 있습니다. 위와 같은 상황이 실제 서비스 구현하실 때 많이 마주하시게 될텐데요. 자바스크립트는 타입이 없다보니 숫자로 취급하던 값을 무의식적으로 문자로 변환하실 수도 있습니다. 경우에 따라서는 내가 의도하지 않게 타입이 바뀌었더라도 애플리케이션 실행에는 영향이 없을 수도 있는데 가끔은 크리티컬한 에러가 발생할 수 있습니다. 그래서 좀 더 명시적으로 에러가 나지 않는 방향으로 코딩을 하자고 하는게 바로 코드에 타입을 추가해서 개발자의 의도를 한번 더 파악해보자. 이런 느낌이라고 보시면 좋을 것 같아요 :)
TSLint
0
67
1
vscode eslint server 오류
0
80
1
안녕하세요. 기본타입- 튜플, 객체, 진위값 부분의 영상의 화면이 나오질 않습니다.
0
77
1
live server 설치 오류
1
372
2
강의 교안 pdf 는 따로 제공하지않나요?
0
286
2
npm i 설치 이유 문의
1
407
3
index.ts Delete `␍`eslintprettier/prettier 오류(빨간줄) 해결
2
289
3
vue 에서 jquery 사용 문제
1
696
2
TSLint 확장 프로그램은 현재 지원하지 않는다고 합니다.
1
501
2
강의 내용처럼 노란 밑줄이 작동하지 않아서 유사 질문들을 실행해보았는데요
1
544
1
section 3-1 JSdoc 타입이 추론되지 않아서 다음과 같이 수정했는데 이거 맞나요?
1
453
2
함수에 리턴 안됐다고 노란밑줄이 쳐져야하는데 없습니다
2
457
1
파일이 다른데 식별자가 중복되었다고 뜹니다.
1
445
2
빨간줄 에러 질문드립니다
1
489
2
마우스 갖다대면 리턴값 설명 나오는 거 질문드려요
1
358
2
js에서 @ts-check 적어도 체크하지 못하는 문제입니다
2
395
2
index.html에서 타입스크립트 콘솔 찍는 법 질문드립니다
1
567
2
섹션 1-3 추론 질문드립니다
1
355
2
왜 api쪽에는 왜 에러가 안나는지 궁금합니다.
1
325
2
const item1을 선언했을 때 타입을 선언해줘도 괜찮을까요?
1
391
1
전화번호부 타입선언
1
267
2
타입을 전역으로 분리
1
593
2
객체 선언 시 구분자는 쉼표, 세미콜론 모두 사용가능한건가요?
1
460
1
Git 관련 질문이 있습니다
1
672
2





