echoja / springfall-comments

0 stars 0 forks source link

article/2023-09/no-func-record #12

Open utterances-bot opened 9 months ago

utterances-bot commented 9 months ago

[TypeScript] 함수 Record 는 지옥이다 | 봄가을

Object, Map, Record 형태에 함수를 몰아넣고 사용할 때 어려움이 있습니다. 이를 타입 좁히기가 가능한 형태로 바꿔 사용합시다.

https://springfall.cc/article/2023-09/no-func-record

pppfeeling commented 9 months ago

우연히.. googling하다가 봤어요. 저도 최근에나 typescript를 사용하게 되서(고수아님) 한번 생각해 봤는데..

-- 첫번째는 type guard를 사용하는 방법

const handlersIs = { A: (event: Events): event is AEvent => { if (event.type === "A") { console.log(event); return true; } return false; }, B: (event: Events): event is BEvent => { if (event.type === "B") { console.log(event); return true; } return false; }, };

// handlers 를 호출하는 함수 function handleEvent(e: Events) { if (handlersIse.type) { console.log("Event handled successfully."); } }

-- 두번째는 타입단언(as)을 사용하는 방법

function handleEventAs(e: Events) { (handlers[e.type] as (event: Events) => void)(e); }