From a614e9dfeb119227b3270bc687166898d0737782 Mon Sep 17 00:00:00 2001 From: hyperbola Date: Sat, 15 Jul 2023 12:41:24 +0800 Subject: [PATCH] Fix type guards for `assert.{truthy,falsy,nan}` Fix that type guards for `assert.truthy` and `assert.falsy` are not working since they are declared to be `unknown` type. Also change type guard for `assert.nan` from `unknown` type to `number` type, as `NaN` is actually of type `number`. --- source/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/index.ts b/source/index.ts index 4612504..174d3b6 100644 --- a/source/index.ts +++ b/source/index.ts @@ -570,9 +570,9 @@ type Assert = { enumCase: (value: unknown, targetEnum: T) => asserts value is T[keyof T]; urlInstance: (value: unknown) => asserts value is URL; urlString: (value: unknown) => asserts value is string; - truthy: (value: unknown) => asserts value is unknown; - falsy: (value: unknown) => asserts value is unknown; - nan: (value: unknown) => asserts value is unknown; + truthy: (value: T | Falsy) => asserts value is T; + falsy: (value: unknown) => asserts value is Falsy; + nan: (value: unknown) => asserts value is number; primitive: (value: unknown) => asserts value is Primitive; integer: (value: unknown) => asserts value is number; safeInteger: (value: unknown) => asserts value is number; @@ -678,9 +678,9 @@ export const assert: Assert = { enumCase: (value: unknown, targetEnum: T): asserts value is T[keyof T] => assertType(is.enumCase(value, targetEnum), 'EnumCase', value), urlInstance: (value: unknown): asserts value is URL => assertType(is.urlInstance(value), 'URL', value), urlString: (value: unknown): asserts value is string => assertType(is.urlString(value), AssertionTypeDescription.urlString, value), - truthy: (value: unknown): asserts value is unknown => assertType(is.truthy(value), AssertionTypeDescription.truthy, value), - falsy: (value: unknown): asserts value is unknown => assertType(is.falsy(value), AssertionTypeDescription.falsy, value), - nan: (value: unknown): asserts value is unknown => assertType(is.nan(value), AssertionTypeDescription.nan, value), + truthy: (value: T | Falsy): asserts value is T => assertType(is.truthy(value), AssertionTypeDescription.truthy, value), + falsy: (value: unknown): asserts value is Falsy => assertType(is.falsy(value), AssertionTypeDescription.falsy, value), + nan: (value: unknown): asserts value is number => assertType(is.nan(value), AssertionTypeDescription.nan, value), primitive: (value: unknown): asserts value is Primitive => assertType(is.primitive(value), AssertionTypeDescription.primitive, value), integer: (value: unknown): asserts value is number => assertType(is.integer(value), AssertionTypeDescription.integer, value), safeInteger: (value: unknown): asserts value is number => assertType(is.safeInteger(value), AssertionTypeDescription.safeInteger, value),