타입스크립트 e unknown문제 해결

Donghun Seol·2023년 3월 31일
0

4.4 버전이후로 try catch 블록의 e가 unknown이 되서 컴파일러가 오류를 뱉는다.
0. unknown으로 지정된 타입은 개발자가 조치를 취해준 뒤 사용해야 한다.
1. 간단한 해결책은 e를 any로 타이핑해준다.
2. 새로운 에러 타입을 만들고 as로 assertion 해준다.
3. instanceof 연산자로 타입가드를 설정한다.

type ResultType = [boolean, string];

const doSomething = (): ResultType => {
  try {
    throw new Error('Some error occurs...');
  } catch (e) {
    return [false, e.message];
  }
};

// 1번 해결
const doSomething = (): ResultType => {
  try {
    throw new Error('Some error occurs...');
  } catch (e:any) {
    return [false, e.message];
  }
};

interface myError extends Error {
  code: string;
  message: string;
}

// 2번 해결
const doSomething = (): ResultType => {
  try {
    throw new Error('Some error occurs...');
  } catch (e) {
    const err = e as myError; // 커스텀에러를 정의해서 err객체를 변수에 넣고 그 변수를 반복해서 사용하면 unknown 에러를 방지할 수 있다.
    return [false, err.message];
  }
};

// 3번 해결
const doSomething = (): ResultType => {
  try {
    throw new Error('Some error occurs...');
  } catch (e) {
    if (e instanceof Error) {
      return [false, err.message];
    }
	return [false, 'not specified error']; 
  }
};

https://velog.io/@devstefancho/typescript-Object-is-of-type-unknown.ts2571-error-object

profile
I'm going from failure to failure without losing enthusiasm

0개의 댓글