[typescript] 타입 가드와 가변성 문제 해결을 위한 디자인 패턴

본 문서에서는 TypeScript에서 타입 가드와 가변성 문제를 해결하기 위한 디자인 패턴에 대해 소개합니다.

1. 타입 가드

타입 가드는 TypeScript에서 변수의 타입을 확실하게 하는 방법 중 하나입니다. 주로 typeof, instanceof, 또는 사용자 정의 type predicates를 이용하여 타입을 체크할 수 있습니다. 예를 들어, 아래의 예제 코드에서 isString 함수는 문자열 여부를 판별하여 타입을 가드합니다.

function isString(value: any): value is string {
  return typeof value === 'string';
}

let example: any = 'hello';

if (isString(example)) {
  console.log(example.toUpperCase());
}

2. 가변성 문제 해결을 위한 디자인 패턴

가변성 문제(변수의 값이 변경됨에 따라 타입이 변경되는 문제)는 TypeScript에서 종종 발생합니다. 이를 해결하기 위해 다음과 같은 디자인 패턴을 활용할 수 있습니다.

// 2.1. 타입 단언(Type Assertion)
let userInput: unknown;
let userName: string;

userInput = 5;
userName = userInput as string;

// 2.2. 일반화된 타입(Enum or Literal Types)
type ResultType = 'success' | 'failure';
let result: ResultType;
result = 'success';

// 2.3. 유니언 타입(Unions)
type NumericOrString = number | string;
let anotherExample: NumericOrString;
anotherExample = 5;
anotherExample = 'hello';

결론

이 문서에서는 TypeScript에서 타입 가드와 가변성 문제를 해결하기 위한 디자인 패턴에 대해 알아보았습니다. 이를 활용하여 코드의 안정성을 높일 수 있으며, 더 나은 TypeScript 개발 경험을 얻을 수 있습니다.

참고문헌: