타입스크립트 코드에서 특정 타입이 다른 타입에 잘 맞는지를 의미합니다.
interface Developer{
name: string;
skill: string;
}
interface Person{
name: string;
}
let developer: Developer;
let person: Person;
developer = person; // 에러이유 : 왼쪽에 있는 변수가 더 큰 관계를 가지고 있어서
person = developer; // 에러가 안뜬다.
interface Developer{
name: string;
skill: string;
}
class Person{
name: string;
}
let developer: Developer;
developer = new Person(); // 에러 발생
let add = function(a: number){
// ...
}
let sum = function(a: number, b: number){
// ...
}
add = sum; // 에러
sum = add // 가능
sum
이 add
보다 큽니다.interface Empty<T> {
// ...
}
let empty1: Empty<string>;
let empty2: Empty<number>;
// 아래 모두 호환 가능
empty1 = empty2;
empty2 = empty1;
interface NotEmpty<T> {
date: T;
}
let notempty1: NotEmpty<string>;
let notempty2: NotEmpty<number>;
// 모두 호환 불가능
// 동일한 속성을 가지지만 타입의 차이가 발생한다.
notempty1 = notempty2;
notempty2 = notempty1;