-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
안녕하세요 유니온 타입 질문 드립니다.
22.07.27 22:28 작성 조회수 123
1
위 코드를 보면 function 부분에서는 빨간 줄로 오류가 발생합니다. 제가 강의를 보며 이전 강의에서는 유니온 연산일 경우에는
각 인터페이스의 공통된 값만 사용 할 수 있다고 들었는데요
이제 직접 askSomeone 함수를 이용하여 타입에 맞게 파라미터를 부여할 경우에는 오류가 발생하지 않나요?
함수를 사용할 때도 원래는 name 만 받아 사용 할 수 있어야 하는 것 아닌가 싶어서 질문드립니다!
답변을 작성해보세요.
0
장기효(캡틴판교)
지식공유자2022.07.28
안녕하세요 주현님, 본문에 첨부해 주신 이미지에서 에러가 나는 이유는 askSomeone() 함수의 someone 파라미터가 어떤 객체를 받을 지 모르기 때문에 Developer3과 Person3에 공통으로 접근할 수 있는 속성만 안전하게 접근해 주기 때문입니다. 이후에 배우는 타입 가드 개념을 섞어서 특정 라인에서 해당 타입으로 추론하시면 skill이나 age에 접근해도 에러가 안날 거예요.
코드는 아래 코드 참고하세요.
interface Person {
name: string;
age: number;
}
interface Developer {
name: string;
skill: string;
}
function isPerson(target: Person | Developer): target is Person {
return (target as Person).age !== undefined;
}
function askSomeone(someone: Person | Developer) {
if (isPerson(someone)) {
someone.age;
}
if (!isPerson(someone)) {
someone.skill;
}
}
답변 1