본문 바로가기
IT/typescript

[typescript] is

by 내일은교양왕 2024. 6. 12.

개념

TypeScript의 "is" 연산자는 주로 사용자 정의 타입 가드(User-defined Type Guards)에서 사용됩니다. 타입스크립트는 정적 타입 언어로, 컴파일 시점에 타입을 확인합니다. 하지만 런타임에는 여전히 자바스크립트처럼 동적으로 동작합니다. 이로 인해 변수의 타입을 런타임에 확인할 필요가 있을 때가 있습니다. "is" 연산자는 이럴 때 매우 유용합니다.

 

사용자 정의 타입 가드 (User-defined Type Guards)

"Is" 연산자는 함수가 특정 타입의 값을 반환하는지 여부를 명시적으로 컴파일러에게 알려주는 역할을 합니다. 이는 특히 복잡한 타입 검사나 커스텀 타입 검사가 필요한 경우에 유용합니다.

 

예시

아래는 사용자 정의 타입 가드가 어떻게 사용되는지 보여주는 예제입니다.

 

interface Cat {
    meow(): void;
}

interface Dog {
    bark(): void;
}

// 고양이인지 확인하는 사용자 정의 타입 가드 함수
function isCat(animal: Cat | Dog): animal is Cat {
    return (animal as Cat).meow !== undefined;
}

function makeSound(animal: Cat | Dog) {
    if (isCat(animal)) {
        animal.meow();  // 컴파일러는 animal이 Cat 타입임을 알고 있습니다.
    } else {
        animal.bark();  // 컴파일러는 animal이 Dog 타입임을 알고 있습니다.
    }
}

 

위 코드에서 isCat 함수는 animal이 Cat 타입인지 확인합니다. 이 함수는 animal is Cat 타입의 반환 타입 주석을 갖고 있습니다. 이는 TypeScript 컴파일러에게 isCat(animal)이 true를 반환할 경우, animal이 Cat 타입임을 알려줍니다.

 

요약

  • 왜 존재하는가?: "Is" 연산자는 TypeScript의 정적 타입 시스템 내에서 런타임 타입 검사를 수행하기 위해 존재합니다.
  • 어디에 유용한가?: 사용자 정의 타입 가드를 작성할 때 유용합니다.
  • 어떻게 작동하는가?: 함수가 특정 타입을 반환하는지 확인하고, 이를 컴파일러에게 명시적으로 알립니다.

이를 통해 코드의 가독성을 높이고, 런타임 에러를 줄일 수 있습니다. TypeScript의 타입 시스템은 이렇게 강력한 타입 안전성을 제공하여 개발자가 더욱 신뢰할 수 있는 코드를 작성할 수 있도록 돕습니다.

 


https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates

 

Documentation - Narrowing

Understand how TypeScript uses JavaScript knowledge to reduce the amount of type syntax in your projects.

www.typescriptlang.org

 

'IT > typescript' 카테고리의 다른 글

[typescript] subtype  (0) 2024.08.14
[typescript] pnpm monorepo에서 paths 설정하기  (1) 2024.07.15
[typescript] in  (0) 2024.06.12
[typescript] as const  (0) 2024.06.03
[clean code] 놓치기 쉬운 것들  (0) 2024.04.22