인프런 커뮤니티 질문&답변

ryosuke kureha님의 프로필 이미지
ryosuke kureha

작성한 질문수

타입스크립트 입문 - 기초부터 실전까지

유니온 타입과 인터섹션 타입의 차이점

age의 or | type의 속성을 인식해버립니다. ㅠㅠ 제가 잘못하고 있는건가요?

작성

·

118

1

function Union(union: Developer | Person) {
// Union Type이 되면, 타입(Developer |or Person)의 공통된 타입만 속성이 된다.
union.name; // (property) name: string
union.age;
// @Error : union.age
// Why not Error?.... not or.. (property) Person.age: number !== WHY?
union.skill;
// Property 'skill' does not exist on type 'Developer | Person'.
// Property 'skill' does not exist on type 'Person'.
}

function askUnion(union: Developer & Person) {
// Union Type이 되면, 타입(Developer &and Person)의 정의된 타입 모두 속성이 된다.
union.name //(property) name: string
union.age //(property) Person.age: number
union.skill //(property) Developer.skill: string
}

var kureha: string | number | boolean // var kureha: string | number | boolean
var ryosuke: string & number & boolean; // var ryosuke: never

답변 2

1

function Union(union: Developers | Person) {
// Union Type이 되면, 타입(Developer |or Person)의 공통된 타입만 속성이 된다.
union.name; // (property) name: string
/**
* any
Property 'age' does not exist on type 'Developers | Person'.
Property 'age' does not exist on type 'Developers'.ts(2339)
*/
union.age;
// @Error : union.age
// Why not Error?.... not or.. (property) Person.age: number !== WHY?
/**
* Error찾음!: 4_interface.ts => interface Developer extends Person { Person의 interface 상속때문에 인식하게 됨. Person의 확장 | 상속값의 age가 있음.}
*/
union.skills;
// Property 'skill' does not exist on type 'Developer | Person'.
// Property 'skill' does not exist on type 'Person'.
}
에러찾았어요 선생님... 3_interface의 인터페이스의 확장강의에 Person 의 확장값?상속값을 인식한해서 에러가 발생하지 않은것같아요
지금은 interface의 변수명을 바꾸니까 에러가 발생합니다.

0

안녕하세요 ryosuke님, 잘 해결하셔서 다행입니다 :)

ryosuke kureha님의 프로필 이미지
ryosuke kureha

작성한 질문수

질문하기