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에서 이 기능의 원래 문제를 적극 권장합니다(부록에 있는 링크도 참조).