[230710] Typescript is 와 as 차이
Typescript is와 as 차이점
TypeScript에서 is와 as는 모두 타입 어설션(type assertion)에 사용되지만, 각각 다른 용도로 사용 됨
is:
- is 키워드는 타입 가드(type guard)로 사용
- 주로 조건문에서 값이 특정 타입인지 확인하는데 사용
- 이를 통해 조건 블록 내에서 변수의 타입을 좁힐 수 있음
function isString(value: unknown): value is string {
return typeof value === "string";
}
function processValue(value: unknown) {
if (isString(value)) {
// 이 블록 내에서 TypeScript는 `value`가 `string` 타입임을 알고 있음
console.log(value.toUpperCase());
} else {
console.log("값은 문자열이 아닙니다.");
}
}
위의 예시에서 isString 함수는 value 매개변수가 string 타입인지 확인하는 타입 가드임. isString이 true를 반환할 때 TypeScript는 if 블록 내에서 value가 실제로 string 타입임을 추론한다.
as:
- as 키워드는 타입 어설션(type assertion)에 사용
- TypeScript 컴파일러에게 값의 타입을 명시적으로 알려줄 때 사용되며, 컴파일러가 타입을 추론할 수 없는 경우에 유용
- 이는 타입 체크 시스템을 우회하는 방법임
let value: unknown = "안녕하세요!";
let length: number = (value as string).length;
위의 예시에서 as 키워드는 value가 string 타입임을 명시적으로 어설션했음. TypeScript는 어설션 이후에 value의 length 속성에 접근하는 것을 허용
as를 사용할 때는 주의해야 한다. as는 TypeScript의 일부 타입 체크를 우회하기 때문에 신중하게 사용해야 함. as는 값의 타입을 잘 알고 있을 때에만 사용하기
요약하면, is는 타입 가드와 조건 블록 내에서 타입을 좁히는데 사용되고, as는 값의 타입을 명시적으로 어설션할 때 사용된다
Leave a comment