한 입 크기로 잘라먹는 타입스크립트 - 객체 타입의 호환성
타입스크립트 파일 이름 수정 후 오류가 남아있다면, Ctrl + Shift + P 누르고 restart 명령어 실행.
1. 객체 타입간의 호환성
기본 타입 간의 호환성 : 특정 타입을 다른 타입으로 취급해도 괜찮은지 판단하는 것.
객체 타입 간의 호환성 : 어떤 객체 타입을 다른 객체 타입으로 취급해도 괜찮은지 판단하는 것.
- src/chapter3.ts
// 기본 타입 간의 호환성
let num1: number = 10;
let num2: 10 = 10;
num1 = num2; // 업캐스팅 가능
// 객체 타입 간의 호환성
// 프로퍼티를 기준으로 슈퍼타입 혹은 서브타입 관계가 맺어진다.
// 추가 프로퍼티가 없이 조건이 더 적은 타입이 슈퍼타입이 된다.
type Animal = {
name: string;
color: string;
};
type Dog = {
name: string;
color: string;
breed: string; // 추가 프로퍼티
};
let animal: Animal = {
name: '기린'
, color: 'yellow'
};
let dog: Dog = {
name: '돌돌이'
, color: 'brown'
, breed: '진도'
};
animal = dog; // 업캐스팅
// dog = animal; // 다운캐스팅 : 오류
// 연습
type Book = { // 슈퍼타입
name: string;
price: number;
};
type ProgrammingBook = { // 서브타입
name: string;
price: number;
skill: string;
};
let book: Book;
let programmingBook: ProgrammingBook = {
name: '한 입 크기로 잘라먹는 리액트'
, price: 33000
, skill: 'reactjs'
}
book = programmingBook; // 업캐스팅
// programmingBook = book; // 다운캐스팅
타입스크립트는 프로퍼티를 기준으로 타입을 정의하는 '구조적 타입 시스템' 을 따른다.
2. 초과 프로퍼티 검사
초과 프로퍼티 검사 : 변수 초기화시 초기화하는 값으로 객체 리터럴을 사용하면 발동하는 검사로, 초과 프로퍼티를 작성하지 못하도록 막는 검사.
따라서, 객체 타입에 정의된 프로퍼티만 넣을 수 있도록 해야 한다.
함수 호출시 매개변수로 객체 리터럴을 사용해도 초과 프로퍼티 검사가 이루어진다.
- src/chapter3.ts
...
// 가능
book = programmingBook; // 업캐스팅
// programmingBook = book; // 다운캐스팅
// 불가능
// 초과 프로퍼티 검사
let book2: Book = { // 오류 발생
name: '한 입 크기로 잘라먹는 리액트'
, price: 33000
// , skill: 'reactjs'
}
// 초과 프로퍼티 검사 방지
let book3: Book = programmingBook;
// 함수 호출시 매개변수에서도 초과 프로퍼티 검사 이루어짐
function func(book: Book) {}
func({
name: '한 입 크기로 잘라먹는 리액트'
, price: 33000
// , skill: 'reactjs'
});
// 초과 프로퍼티 검사 방지
func(programmingBook);
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
타입 추론 (0) | 2024.08.12 |
---|---|
대수 타입 (0) | 2024.08.09 |
타입 계층도와 함께 기본타입 살펴보기 (1) | 2024.08.05 |
타입은 집합이다 (0) | 2024.07.31 |
타입스크립트 이해하기 (0) | 2024.07.30 |
댓글