Just Do IT!
[TypeScript] @ts-ignore과 @ts-expect-error 본문
728x90
반응형
이번 프로젝트에서 리액트로 만든 프로젝트를 타입스크립트로 리팩토링하는 과정에서 타입 에러가 생겨서 어떤 식으로 해결해야 할 지 몰랐던 때가 있었다. 팀원들끼리 엄청 고민하다가 다른 분이 @ts-ignore 라는 걸 알려주셔서 덕분에 그 주석 처리로 인해 타입 에러를 넘어갈 수 있었다. 정확한 용도를 몰라서 구글링하고 공식문서를 보고 정리해본다.
@ts-ignore 란?
// @ts-ignore
- suppression comment (억제 주석)
- type checking 할 때 바로 다음 행의 타입 에러를 무시할 수 있다
- 다음 행에 오류가 없을 경우 아무것도 하지 않는다.
- 어떨 때 사용하는가?
- 더 큰 프로젝트를 갖고 있고 코드에서 발생한 새로운 오류의 명확한 책임자를 찾기 힘든 경우
- TypeScript의 두 가지 버전 사이에서 업그레이드하는 중이고, 한 버전에서는 코드 오류가 발생하지만 나머지 버전에서는 그렇지 않은 경우
- 솔직히 어떤 옵션 더 나은지 결정할 시간이 없는 경우
사용한 예시 (이번 프로젝트의 내용)
//@ts-ignore
import XMLParser from 'react-xml-parser';
// react-xml-parser 라이브러리가 타입스크립트 버전이 없어서 대체할 라이브러리를 찾지 못했다.
// 대신에 @ts-ignore 를 사용하면서 자바스크립트로 인식하게 하여 type error를 해결했다.
@ts-expect-error
// @ts-expect-error
- TypeScript 3.9 에서 새로 도입한 기능
- 이 주석이 붙어 있는 경우 typescript는 해당 오류를 오류로 보지 않고 넘어간다.
- 어떨 때 사용하는 가?
- 타입 시스템이 작동에 대한 오류를 발생시키는 테스트 코드 작성을 원하는 경우
- 수정이 빨리 이루어지길 원하며 빠른 해결책이 필요한 경우
- 오류가 발생한 코드가 다시 유효해지면 바로 억제 주석을 삭제하길 원하는 혁신적인 팀이 이끄는 적당한-크기의 프로젝트에서 작업하는 경우
차이점
둘 다 모두 바로 다음에 오는 오류를 억제해주는 역할을 하지만,
@ts-ignore는 다음 행에 오류가 없을 경우 작동하지 않는다.
타입 에러를 무시해야 할 때 둘 중 필요한 용도에 맞게 사용하면 된다.
이 두 개의 차이점은 Typescript 공식 문서에 잘 정리되어 있으니 참고하자.
https://typescript-kr.github.io/pages/release-notes/typescript-3.9.html#-ts-expect-error-comments
TypeScript 한글 문서
TypeScript 한글 번역 문서입니다
typescript-kr.github.io
728x90
'개발 공부 > TypeScript' 카테고리의 다른 글
[TypeScript] class-validator 사용하기 (0) | 2023.02.02 |
---|---|
[TypeScript] class-transformer 사용하기 (0) | 2023.02.02 |
[Typescript] Webpack + typescript 환경 설정하기 (0) | 2023.01.31 |
[TypeScript] tsconfig.json 옵션 살펴보기 (0) | 2023.01.17 |
[TypeScript] 시작하기 - 설치 및 환경 설정 (0) | 2023.01.13 |