정구리의 우주정복

[TypeScript] 내가 보려고 끄적 본문

WEB DEVELOP/STUDY

[TypeScript] 내가 보려고 끄적

Jungry_ 2023. 2. 20. 12:11
반응형

내가 이해한거 바탕으로 적어본다 

 

제네릭 사용하는 경우  : 다양한 타입들이 올 수 있는 경우에 사용한다 

타입가드 사용하는 경우 :  (is 사용하는거) 넓은 타입을 좁혀줄때 사용한다 ex) number | string 을 string 하나로 바꿔주고 싶다던지

extends 를 사용하는경우 : 부분집합임을 표현할 때 사용한다 ex ) 

filter<S extends T>(callback : (v: T) => v is S ) : S[];

S가 T의 부분집합임을 표현할 때 사용한다

 

interface Arr<T> {
    forEach(callback : (item : T) => void):void;

    map<S>(callback:(v : T) => S ):S[];

    filter<S extends T>(callback : (v: T) => v is S ) : S[];
} 

const aaa : Arr<number> = [1,2,3];
const bbb = aaa.map<number>((v) => v+1); //[2,3,4]
const ccc = aaa.map<string>((v) => v.toString()); //['2','3','4']
const ddd = aaa.map((v) => v%2 ===0); //[f,t,f] boolean
const eee = aaa.filter((v) : v is number => v%2 ===0); //[2] number[]
const fff : Arr<number | string> = [1,'2',3,'4',5];
const ggg = fff.filter((v) : v is string => typeof v === 'string'); //['2','4'] string[] //넓은 타입을 좁혀줄땐 is 를 쓴다
const hhh = fff.filter((v) : v is number => typeof v === 'number' );
반응형
Comments