TypeScript의 'satisfies' 연산자

해당 표현식의 결과 유형을 변경하지 않고 표현식 유형이 일부 유형과 일치하는지 확인합니다.

TypeScript 4.9는 다음을 충족합니다.

버전 4.9에서 TypeScript는 "satisfies" 연산자라는 새로운 연산자를 도입했습니다. 목적은 유형의 합집합이 전체 유형을 만족하도록 하여 비균질 유형 세트를 보다 유연하게 만드는 것입니다.

Record<>로 유형 오류 수정

이 새로운 연산자를 보여주는 가장 좋은 예는 값의 유형이 다를 수 있는 "레코드" 유형을 사용합니다.

type Keys = "alpha" | "beta" | "gamma";

const variants = {
  alpha: 0,
  beta: 1,
  gamma: "three"
} satisfies Record<Keys, string | number>;

// With the new 'satisfies'-operator,
// the types for each of the properties
// is correctly inferred.
const otherBeta = variants.beta + 10;
const gammeUppercase = variants.gamma.toUpperCase();

보시다시피 새 코드를 사용하면 주어진 키의 유효한 유형을 올바르게 추론할 수 있습니다. TypeScript 4.9 이전에는 불가능했습니다. 컴파일러는 값이 문자열 또는 숫자 유형일 수 있다고 불평하지만 이제 컴파일러는 특정 유형을 올바르게 유추합니다.

속성 이름 제한

또한 new 연산자를 사용하여 세트가 일부 지정된 키만 포함하고 다른 키를 허용하지 않아도 괜찮다는 것을 컴파일러에 지시할 수 있습니다.

type Keys = "alpha" | "beta" | "gamma";

const variants = {
    alpha: "value",
    beta: 0,
    // The compiler will show an error,
    // as 'delta' is not part of the keys.
    delta: new Date()
} satisfies Partial<Record<Keys, unknown>>;

더 많은 예

자세한 설명이 포함된 전체 예제 목록을 보려면 저자가 많은 사용 사례를 설명하는 Github에서 이 기능의 원래 문제를 적극 권장합니다(부록에 있는 링크도 참조).