본문 바로가기
부트캠프교육중/TypeScript

[TS] 타입 호환

by 뭉지야 2023. 8. 18.
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