[typescript] 타입스크립트에서의 특정 타입을 위한 할당 가능성 변환 방식

타입스크립트에서는 할당 가능성 변환이라는 개념을 사용하여 특정 타입들의 관계를 정의합니다. 이는 서로 다른 타입들 간에 값이 할당 가능한지 여부를 판단하는 규칙을 제공합니다.

할당 가능성 변환 규칙

타입스크립트에서의 할당 가능성 변환 규칙은 다음과 같습니다:

  1. 공변성 (Covariance): 하위 타입은 상위 타입으로 할당 가능합니다. 이것은 주로 배열과 함수 타입에서 적용됩니다.
let subType: string = "Hello";
let superType: object = subType; // 할당 가능
  1. 반변성 (Contravariance): 상위 타입은 하위 타입으로 할당 가능합니다. 매개변수 타입에서 주로 적용됩니다.
type Handler = (a: number) => void;
function handleNumber(fn: Handler): void {
    // ...
}

// 반변성 적용
let subType: (a: string) => void;
handleNumber(subType);
  1. 무변성 (Invariance): 두 타입 간에는 별다른 관계가 없습니다. 즉, 서로 할당 불가능합니다.
class Animal {}
class Dog extends Animal {}

let animal: Animal = new Animal();
let dog: Dog = animal; // 에러: 할당 불가

자신의 타입을 이용한 할당 가능성 변환

타입스크립트에서는 자신의 타입을 이용하여 할당 가능성 변환을 지정하는 방법을 제공합니다. 이는 타입 매개변수를 이용하여 타입들 간의 관계를 표현할 수 있도록 합니다.

예를 들어, 배열의 map 함수를 활용하여 타입 변환을 지정할 수 있습니다:

let numbers: number[] = [1, 2, 3];
let strings: string[] = numbers.map(String); // 할당 가능

결론

타입스크립트에서의 할당 가능성 변환 규칙을 이용하여 타입들 간의 관계를 명확히 정의하고, 안전한 코딩을 지원할 수 있습니다.


참고: