반응형
TypeScript 타입 연산자
TypeScript는 JavaScript에 정적 타입 시스템을 추가하여, 개발 시 컴파일 타임에서 오류를 쉽게 찾을 수 있게 해준다.
이러한 기능 중 하나가 강력한 타입 연산자들인데, 이번엔 이 타입 연산자에 대해서 정리해보려고 한다.
타입 연산자
TypeScript의 타입 연산자는 타입을 다루고 조작하기 위해 사용되는 연산자이다. TypeScript는 정적 타입을 지원하기 때문에 변수, 매개변수, 함수 등에 타입 정보를 명시하거나 추론할 수 있도록 해주는데, 이러한 타입 연산자를 사용하면 타입을 보다 정교하게 다룰 수 있다.
주로 사용되는 연산자
typeof
- JavaScript에서,
typeof
는 런타임에 변수의 타입을 가져오는 연산자. - TypeScript에서,
typeof
는 타입 컨텍스트에서 사용될 때 해당 값의 타입을 가져오는 연산자로 동작한다.
let person = {
name: "Alice",
age: 30
};
type PersonType = typeof person;
// type PersonType = {
// name: string;
// age: number;
// }
keyof
keyof
연산자는 객체 타입의 모든 키를 문자열 유니온 타입으로 가져온다.- PersonKeys 타입은 "name" | "age"로 정의되며, PersonKeys로 정의된 변수에는 "name" 또는 "age"만 할당할 수 있다.
type Person = {
name: string;
age: number;
};
type PersonKeys = keyof Person; // "name" | "age"
in
- 타입의 키를 반복하는 데 사용된다.
type Keys = 'option1' | 'option2';
type Flags = { [K in Keys]: boolean }; // { option1: boolean, option2: boolean }
extends
- 조건적 타입을 생성할 때 사용된다.
type IsString<T> = T extends string ? true : false;
type X = IsString<'hello'>; // true
type Y = IsString<number>; // false
infer
- 조건적 타입의 내부에서 타입을 추론하는 데 사용된다.
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
readonly
- 객체의 모든 속성을 읽기 전용으로 만들어준다.
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
never
never
타입은 절대 발생할 수 없는 값을 나타낸다. 주로 조건 타입에서 특정 조건이 거짓일 때 사용된다.
type ExcludeString<T> = T extends string ? never : T;
type Result = ExcludeString<string | number | boolean>;
// number | boolean
instanceof
- 특정 클래스의 인스턴스 여부를 확인합니다.
class Car {}
const myCar = new Car();
if (myCar instanceof Car) {
// myCar는 Car 클래스의 인스턴스.
}
as
- 타입 단언을 통해 특정 값의 타입을 강제로 지정해준다.
const userInput: 'Hello' = "Hello";
const inputLength = (userInput as string).length; // 타입 단언으로 문자열 타입으로 변환
정리
TypeScript의 타입 연산자들은 코드의 타입 안정성을 높이고, 다양한 상황에서 유연한 타입 정의를 가능하게 하며, 이 연산자들을 활용하면 코드의 복잡성을 줄이고 오류를 사전에 방지하는 데 큰 도움이 된다.
반응형
'Develop Log > TypeScript' 카테고리의 다른 글
TypeScript의 타입 알아보기 (0) | 2023.07.31 |
---|---|
TypeScript 알아보기 - TypeScript란? (0) | 2023.07.30 |