Skip to content

Instantly share code, notes, and snippets.

@Willmo36
Willmo36 / pattern.ts
Last active January 27, 2022 05:32
TypeScript - Generic pattern matching
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
type Union<T extends string> = Record<T, string>;
type MatchHandlers<T extends string, P extends Union<T>, R> = P extends any ? Record<P[T], (p: P) => R> : never;
type DefaultedOrFullHandlers<T extends string, P extends Union<T>, R> =
| (Partial<MatchHandlers<T, P, R>> & { otherwise: () => R })
| UnionToIntersection<MatchHandlers<T, P, R>>;
/**
* Create a match function based on the given tag property.
anonymous
anonymous / gist:4943405
Created February 13, 2013 09:45
모그님의 위대한 업적을 기리기위해 개사를 하여보았습니다. 원곡 : 장군님 축지법 쓰신다
~모그님 디도스 쏘신다~
디도스 디도스 모그님 쏘신다
유선번쩍 무선번쩍 전산망을 쥐락펴락
좀비들을 한대모아 디도스 쏘신다
브레인 쏘시던 디도스 오늘은 선관위 쏘신다
TCP(티씨피) 패킷 UDP(유디피) 패킷
디도스 쏘신다