-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
askSomeone 함수의 파라미터를 유니온 타입으로 작성했을 때
21.06.07 12:15 작성 조회수 184
2
askSomeone 함수의 somone 파라미터를 유니온 타입(Developer | Person)으로 작성하고 해당 함수를 호출 할 때
askSomeone({ name: ‘디벨로퍼‘, skill: ‘웹 개발’, age: 34})
로도 파라미터 주입이 가능한데요.
타입 구조체에 유니온 타입을 적용하게 될 경우 보장된 타입(공통된 타입)만 추론 가능한 것으로 이해했는데, Developer의 타입 구조체에 Person 타입 구조체의 속성인 age가 결합이 되어도 되는 건가요?
답변을 작성해보세요.
1
이설란
질문자2021.06.10
기효님 ㅠㅠ과찬이세요ㅠㅠ 배워갈수록 부족함을 더 많이 느끼고 있답니다
기효님을 업계에서 만나게 된다면 저에겐 큰 기쁨일거예요 ㅎㅎ
어머.. 네! 저 아직 TS2 결제 전입니다. 쿠폰 주시면 저는 너무 감사하죠ㅠㅠ..!
여러모로 감사합니다 기효님ㅠㅡㅠ
장기효(캡틴판교)
지식공유자2021.06.10
에이.. 설란님 넘 겸손하세요 ㅋㅋ 사기캐시면서... 아래 쿠폰 사용해서 결제하시면 유데미보다 싸게 사실 수 있을거예요... ㅋㅋㅋ
2803-b545bfdab787
그럼 재밌게 학습하시고 시간 되실 때 수강평도 잘 남겨주시길 부탁드리겠습니다 :)
1
이설란
질문자2021.06.10
ㅎㅎ저를 기억해주시고 계시다니ㅠㅡㅠ..! 감동입니다.
네 이렇게 친절한 답변을 보니 이해가 갑니다..!
유니온이 의외로 햇갈리는 포인트들이 몇가지 있네요
믿고 보는 기효님 강좌로 TS 파트2까지 열심히 달려보겠습니다 ㅎㅎ
장기효(캡틴판교)
지식공유자2021.06.10
설란님은 그 때 수업 들으실 때도 보면 굉장히 명석하시고 엔지니어적 사고가 높으셨던 걸로 기억해요 ㅋㅋ 오프라인 수업에서도 질문이 날카로웠는데 역시... ㅋㅋ 업계가 좁아서 조만간 또 만나실 수 있지 않을까요? :) TS 파트 2는 아직 결제 안하셨으면 제가 쿠폰 드릴까요? :)
0
장기효(캡틴판교)
지식공유자2021.06.09
오 안녕하세요 설란님! ㅋㅋ TS 강의 듣고 계시는 군요.. ㅋㅋ 역시 날카로운 질문을 주시네요... :)
askSomeone() 함수의 파라미터는 Developer와 Person을 모두 취급하는 유니온 타입이기 때문에 함수를 호출하는 시점에서는 두 타입의 속성들을 다 넘길 수 있습니다. 보장된 타입(속성)만 추론된다는 부분은 함수 안에서의 규칙이라고 보시면 될 것 같아요. 유니온이 좀 헷갈리죠... 아래 케이스를 생각해보시면 아마 이해하시기가 수월하실 수도 있을 것 같습니다 :)
// 문자열과 숫자를 유니온 타입으로 묶었을 때
function askSomeone(someone: 'a' | 100) { ... }
askSomeone('a'); // O
askSomeone(100); // O
// 타입 추론 결과
function askSomeone(someone: 'a' | 100) {
if (typeof someone === 'string') {
console.log(someone); // 'a'
}
if (typeof someone === 'number') {
console.log(someone); // 100
}
}
씨유삔
2021.10.11
안녕하세요 강사님, 해당 답변을 보고 질문이 있어 이렇게 글을 남깁니다.
위 예시는 문자열과 숫자를 유니온 타입으로 묶었기 때문에 typeof 연산자를 사용해서 분기처리를 했는데,
인터페이스를 유니온 타입으로 묶었을 때는 함수 내에서 분기처리를 해서 사용할 수가 있나요?
함수 내에서는 불가능하고 '타입가드'를 활용해서 한 번 더 함수를 감싸준 후에 분기 처리하여 사용해야하나요?
답변 3