JNU-econovation / hotsix-study

에코노베이션 타입스크립트 스터디
5 stars 7 forks source link

[06/04] Function, Narrowing and Assertion #6

Closed Klomachenko closed 1 year ago

Klomachenko commented 1 year ago

이번엔 저번에 윤생님과 채승님께서 타입 지정에 대해서 조금 더 공부해보라고 하신

Narrowing을 공부하였고 그중에 Assertion까지 공부를 해 보았습니다.

추가로 Fucntion 도 조금 공부해 보았으니 확인해주시면 감사하겠습니다.

GiPyoo commented 1 year ago

타입 Assertion에서 as를 활용할때는 넓은 범위의 타입 데이터를 받을 때, 해당 타입을 특정 제너릭 타입으로 고정시킬때 좋습니다.

type ListBlockProps<T extends Record<string, unknown>> = {
  data: T[];
}

function ListBlock<T extends Record<string, unknown>>({
  data = []
}: ListBlockProps<Record<string, any>>): ReactElement) {
  function removeItem (index): void {
    const updatedData: T[] = [...data] as T[]
    const [removedItem] = updatedData.splice(index, 1)
    onChange({ data: updatedData, action: 'REMOVED', target: removedItem, index })
  }
  //... 후략
}

물론 너무 과도한 사용이긴 합니다.