반응형
코딩애플 강의를 사고 한참동안 안보다가 프로젝트에서 동료분에 제너릭을 사용하는 것을 보고 강의에서 찾아보았다.
그니까 코딩애플 강의내용을 복습한단 뜻
Generic을 사용하면 타입을 파라미터로 입력할 수 있다.
함수에 <>를 열면 파라미터를 입력할 수 있는데, 이 꺽새괄호 안에는 타입만 입력할 수 있다.
Generic 사용 전
generic을 사용하기 전 예제부터 살펴보자.
function func(x:unknown[]){
return x[0];
}
let a = func([4,2])
console.log(a) // 4
console.log(a+1) // Error
a는 숫자 같지만 타입은 unknown이다.
타입추론을 해주지 않고 unknown으로 남아 있기에 타입지정을 :number
이런걸로 강제하기 전까지는 number 타입으로 변하지 않는다.
이렇게 불확실한 unknown, any, union 타입을 입력하면 나오는 값도 Unknown, any, union 타입이고 이 때문에 일어나는 문제들이 많다.
이에 대한 해결책은
1. narrowing 잘하기
2. generic 사용하기
Generic
Generic은 타입을 파라미터로 함수에 입력하는 방식이다. 그럼 원하는 곳에 가변적으로 타입지정이 가능해진다.
function func<Type>(x: Type[]) {
return x[0];
}
let a = func<number>([9, 3, 4]);
console.log(a);//9
let b = func<string>(['june','hee'])
console.log(b);//'june'
이렇게 입력한다.
그럼 함수를 사용할 때 <>안에 파라미터처럼 타입을 입력할 수 있다.
그럼 unknown을 사용하지 않고도 필요할 때마다 필요한 타입을 사용할 수 있다.
타입파라미터는 자유작명하는데 보통 <T> 로 많이 한다고 한다.
반응형
'개발 > TypeScript' 카테고리의 다른 글
타입스크립트는 타입 오류가 있어도 컴파일을 한다. (0) | 2023.01.18 |
---|---|
번역 : The Purpose of 'declare' Keyword in TypeScript (0) | 2022.12.04 |
Enum (0) | 2022.05.06 |
Never 타입 -> 내 코드가 뭔가 문제가 있구나! (0) | 2022.02.10 |
typeof로 object를 구분할 수 없을때 narrowing 하는 방법 : IN 연산자 (0) | 2022.01.19 |