Satisfies 는 무엇인가?
satisfies는 TypeScript 4.9에서 추가된 새로운 연산자입니다. 일반적으로 TypeScript에서 객체의 타입을 선언할 때, 객체의 키와 값의 타입을 명시적으로 지정합니다. 그러나 이 방식은 객체의 키가 정확히 일치해야 하며, 확장성이 떨어질 수 있습니다. satisfies 연산자를 사용하면 이러한 제약을 완화할 수 있습니다.
사용 차이
예시 1: 일반적인 타입 선언 사용
type OperationFn = (left: number, right: number) => number
type Operator = '+' | '-' | '*' | '/' // key의 타입을 지정 해주어야함
const operations: Record<Operator, OperationFn> = {
'+': (left, right) => left + right,
'-': (left, right) => left - right,
'*': (left, right) => left * right,
'/': (left, right) => left / right,
}
예시 2: satisfies 연산자 사용
type OperationFn = (left: number, right: number) => number
const operations = {
'+': (left, right) => left + right,
'-': (left, right) => left - right,
'*': (left, right) => left * right,
'/': (left, right) => left / right,
} satisfies Record<string, OperationFn>
언제 사용해야 할까?
- 속성 이름이 중요하지 않을 때
어쩌면 속성 이름이 정확히 일치하는지는 신경 쓰지 않더라도, 각 속성의 타입에는 신경을 쓸 수 있습니다. 이 경우, 객체의 모든 속성 값이 특정 타입을 준수하도록 보장할 수도 있습니다.
type ValidationFn = (value: string) => boolean;
const validators = {
isEmail: (value) => /@\w+\.\w+/.test(value),
isPhoneNumber: (value) => /^\d{10,11}$/.test(value),
customValidator: (value) => value.startsWith('custom'),
} satisfies Record<string, ValidationFn>;
'FrontEnd' 카테고리의 다른 글
[TypeScript] keyof/typeof 팁 (0) | 2024.02.21 |
---|---|
[css] 아래에서 위로 올라오는 애니메이션(?) (0) | 2022.08.23 |
브라우저 렌더링 (0) | 2022.07.23 |
[Tip] next.js에서 i18n 을 세팅해보자 (0) | 2022.05.30 |
next.js 에서 _middleware.ts의 역할과 최근 활용 예시 (0) | 2022.05.22 |
댓글