diff --git a/src/primitive.test.ts b/src/primitive.test.ts index 7ed81df..c222fe2 100644 --- a/src/primitive.test.ts +++ b/src/primitive.test.ts @@ -22,11 +22,11 @@ test("getMatcher: exhaustive pattern infers one common return type", () => { // Act const matcher = factory({ - a: (s): number => { + a: (s) => { expectTypeOf(s).toEqualTypeOf<"a">(); return 1; }, - b: (s): 1 | 2 => { + b: (s) => { expectTypeOf(s).toEqualTypeOf<"b">(); return 2; }, @@ -69,19 +69,19 @@ test("getMatcher: dispatches on mixed string and numeric keys", () => { // Act const matcher = factory({ - a: (s): number => { + a: (s) => { expectTypeOf(s).toEqualTypeOf<"a">(); return 1; }, - b: (s): 1 | 2 => { + b: (s) => { expectTypeOf(s).toEqualTypeOf<"b">(); return 2; }, - 1: (n): number => { + 1: (n) => { expectTypeOf(n).toEqualTypeOf<1>(); return 10; }, - 2: (n): number => { + 2: (n) => { expectTypeOf(n).toEqualTypeOf<2>(); return 20; }, @@ -106,15 +106,15 @@ test("getMatcher: a `_` fallback receives the unhandled keys", () => { // Act const matcher = factory( { - a: (s): 1 | 2 => { + a: (s) => { expectTypeOf(s).toEqualTypeOf<"a">(); - return 1; + return 1 as const; }, }, - (s): 1 | 2 => { + (s) => { // The fallback sees only the keys `a` did not handle. expectTypeOf(s).toEqualTypeOf<"b" | "c">(); - return 2; + return 2 as const; }, ); @@ -134,16 +134,16 @@ test("getMatcher: a `_` fallback routes mixed string and numeric gaps", () => { // Act const matcher = factory( { - a: (s): string => { + a: (s) => { expectTypeOf(s).toEqualTypeOf<"a">(); return "A"; }, - 1: (n): string => { + 1: (n) => { expectTypeOf(n).toEqualTypeOf<1>(); return "one"; }, }, - (s): string => { + (s) => { expectTypeOf(s).toEqualTypeOf<"b" | 2>(); return "fallback"; }, diff --git a/src/primitive.ts b/src/primitive.ts index 63bfd67..74f6c34 100644 --- a/src/primitive.ts +++ b/src/primitive.ts @@ -32,7 +32,7 @@ type Fallback = UnaryFn< interface MatcherStrict { (handlers: Handlers): UnaryFn; >, Handled>>( - handlers: Handled, + handlers: Handled & Partial>, fallback: Fallback, ): UnaryFn; }