728x90
타입호환(Type Compatibility)
- 타입스크립트 코드에서 특정 타입이 다른 타입에 잘 맞는지를 의미한다.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
}
let developer: Developer;
let person: Person;
developer = person; //에러
person = developer; //정상
person이 더 작은 구조적 범위이기때문에 에러난다.
오른쪽이 더 큰 범위여야한다.!!! 부분집합모양처럼 !!
interface Developer {
name: string;
skill: string;
}
class Person {
name: string;
}
let developer: Developer;
let person: Person;
developer = new Person();
class여도 마찬가지이다 !!!
# 함수의 경우
let add = function(a: number){
//...
}
let sum = function(a: number, b: number){
//....
}
sum = add; //정상
add = sum; //에러. add가 더 큰범위여서.
# 제네릭의 경우
interface Empty<T> {
//...
}
let empty1: Empty<string>;
let empty2: Empty<number>;
empty1 = empty2; //정상
empty2 = empty1; //정상
interface안에가 비어있어서 어떻게 해도 정상이다.
그러나 제네릭의 영향을 받는게 있다면 호환이 되지 않을것이다. 밑의 예시다 그거다.
interface NotEmpty<T> {
data: T;
}
let notempty1: NotEmpty<string>;
let notempty2: NotEmpty<number>;
notempty1 = notempty2; //에러
notempty2 = notempty1; //에러
728x90
'부트캠프교육중 > TypeScript' 카테고리의 다른 글
[TS] event.currentTarget.value (0) | 2023.08.20 |
---|---|
[TS] TS에서 props하는법 (0) | 2023.08.18 |
[TS] 타입 가드 (0) | 2023.08.18 |
[TS] 타입 단언 (0) | 2023.08.18 |
[TS] 타입 추론 (0) | 2023.08.17 |