TypeScript 변경 작업 일지 #1

2022. 3. 4. 15:40개발일지

1. 타입 가드 사용

 

사용 함수에서 return 타입이 null, IBoss, IBoss[]로 세 종류 일때

Argument of type 'IBoss | IBoss[]' is not assignable to parameter of type 'IBoss[]'.
Type 'IBoss' is missing the following properties from type 'IBoss[]': length, pop, push, concat, and 29 more.

와 같은 에러가 발생한다.

 

이 때 에러를 없애려고 as 타입을 사용했는데 잘못된 방법이였다 

잘못된 사용 방법

const bosses = await BossCheck(true) as IBoss[] | null
      if (bosses !== null) {
        const bossCreate = await BossCreate(boss, bosses)
        bossList = bossCreate
      } else {
        const bossCreate = await BossCreate(boss, [])
        bossList = bossCreate
      }

as는 강제로 타입형식을 변경하는거고 정석은 함수에서 지정한 타입을 타입가드를 이용하여 사용해야한다.

 

정상 사용 방법

const bosses = await BossCheck(true) as IBoss[] | null
      if (bosses !== null && Array.isArray(bosses)) {
        const bossCreate = await BossCreate(boss, bosses)
        bossList = bossCreate
      } else {
        const bossCreate = await BossCreate(boss, [])
        bossList = bossCreate
      }

 

타입가드를 if문을 사용하여 진행한다.

 

728x90
반응형