[TS] map, forEach 메서드 타입 정의하기
TIL
map 메서드 타입 정의자바스크립트의 배열 메서드 map은 원본 배열의 각 요소에 콜백 함수를 수행하고, 반환된 값들을 모아 새로운 배열로 만들어 반환한다.const arr = [1, 2, 3];const newArr = arr.map((it) => it * 2); // [2, 4, 6]일반 함수로 구현먼저 제네릭 없이 일반 함수로 만들어보자.function map(arr: unknown[], callback: (item: unknown) => unknown): unknown[] {}메서드를 적용할 배열을 매개변수 arr로 받고, 콜백 함수를 매개변수 callback으로 받는다.map 메서드는 모든 타입의 배열에 적용할 수 있기 때문에 arr의 타입은 unknown[]으로 정의한다.callback의 타입..
[TS] 제네릭 타입 변수 응용
TIL
제네릭 함수 활용 사례사례 1: 여러 개의 타입 변수두 값의 위치를 바꾸는 swap 함수를 만들어 보자.function swap(a: any, b: any) { return [b, a];}const [a, b] = swap(1, 2);any타입을 사용하면 타입 안정성이 보장되지 않는다. 2개의 타입 변수가 필요한 상황이라면 다음과 같이 T, U 처럼 여러 개의 타입 변수를 사용할 수 있다.function swap(a: T, b: U) { return [b, a];}const [a, b] = swap("1", 2);위 코드에서 T는 string 타입으로, U는 number 타입으로 추론된다.반환값은 [U, T] 즉, [number, string] 튜플 타입이 된다. 사례 2: 배열 요소 타입 추론배열의..
[TS] 제네릭
TIL
제네릭(Generic) 이란 함수나 인터페이스, 타입 별칭, 클래스 등을 다양한 타입과 함께 동작하도록 만들어주는 타입스크립트의 기능이다.제네릭이 필요한 상황any 타입의 문제다음과 같이 매개변수 타입을 any로 정의하면 함수 호출 결과가 모두 any 타입으로 추론된다.function func(value: any) { return value;}let num = func(10);let str = func("string");num.toUpperCase(); // ❌ 런타임 오류 발생num에는 Number타입의 값 10이 저장되어 있다. 그러나 any 타입으로 추론되었기 때문에 toUpperCase같은 String타입 전용 메서드를 사용해도 타입스크립트가 오류를 감지하지 못한다.이 코드는 실제로 실행하면 런..