TypeScript의 satisfies 연산자 소개

satisfies 연산자란?

satifsies 연산자는 TypeScript에서 객체가 특정 타입의 조건을 만족하는지 컴파일 시점에 검사할 수 있게 해주는 연산자입니다. 이는 객체가 인터페이스 또는 타입의 구조적 요구사항을 충족하는지 확인할 때 사용됩니다.

기본 사용법

interface Person {
    name: string;
    age: number;
}

const examplePerson = {
    name: "Alice",
    age: 30,
    location: "Seoul"
};

// `examplePerson`이 `Person` 인터페이스를 만족하는지 확인
examplePerson satisfies Person;

위 예제에서 examplePerson 객체는 Person 인터페이스의 요구사항인 nameage 속성을 갖고 있습니다. satisfies 연산자를 사용하면 이 객체가 Person 인터페이스의 조건을 만족하는지 컴파일 시점에 체크할 수 있습니다.

as 키워드와의 차이

as 키워드는 타입 단언(type assertion)을 사용하여 TypeScript 컴파일러에게 특정 변수를 강제로 특정 타입으로 처리하도록 지시합니다. 이는 주로 개발자가 변수의 타입을 확실히 알고 있을 때 사용되며, 실제 타입 체크는 수행하지 않습니다.

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

위 코드에서 someValueany 타입이지만, as string을 사용하여 문자열로 간주하고 그 길이를 구합니다. 이는 컴파일러에게 타입 정보를 제공하며, 실제 런타임 타입 체크는 발생하지 않습니다.

반면, satisfies 연산자는 객체가 실제로 특정 타입의 요구사항을 충족하는지를 검증하며, 타입 변환을 수행하지 않습니다. 이는 코드의 안정성을 보장하고, 타입 관련 버그를 줄이는 데 유용합니다.

결론

TypeScript의 satisfies 연산자는 타입 시스템의 정확성을 향상시키고, 더 안전한 코드 작성을 가능하게 합니다. as 키워드와는 다르게 실제 타입 호환성을 검증하는 데 초점을 맞추고 있으며, TypeScript 코드베이스에서 더욱 강력하고 안전한 타입 체크를 도모합니다.