From 2b94b07fdc8f1a82f507b99000add9b7dca2c3d8 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 20 Aug 2023 11:16:52 +0530 Subject: refactor: adds evalvalue type instead of string --- src/utils/adt.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/utils/adt.ts') diff --git a/src/utils/adt.ts b/src/utils/adt.ts index 45d9e50..3ae387c 100644 --- a/src/utils/adt.ts +++ b/src/utils/adt.ts @@ -7,6 +7,28 @@ export const match = >( }, ): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value) +// type TagValues< +// T extends Tag, +// Keys extends Array, +// Values extends Array = [], +// > = Keys extends [] +// ? Values +// : Keys extends [ +// infer key extends string, +// ...infer restOfKeys extends string[], +// ] +// ? TagValues]> +// : never +// +// export const ifLet = , Keys extends Array>( +// tag: T, +// kinds: Keys, +// cb: (...values: TagValues) => void, +// ): void => { +// const values = kinds.map(k => (tag.tag === k ? tag.value : undefined)) +// ;(cb as any)(...values) +// } + export const matchString = ( key: T, pattern: { -- cgit v1.3.1