@@ -95,14 +95,14 @@ The `unknownutil` provides the following ensure functions which will raise
9595` EnsureError ` when a given ` x ` is not expected type.
9696
9797- ` ensureString(x: unknown): assert x is string `
98- - ` ensureNumber(x: unknown): assert x is string `
98+ - ` ensureNumber(x: unknown): assert x is number `
9999- ` ensureBoolean(x: unknown): assert x is boolean `
100100- ` ensureArray<T extends unknown>(x: unknown, pred?: Predicate<T>): assert x is T[] `
101- - ` ensureObject<T extends unknown>(x: unknown, pred?: Predicate<T>): x ensure Record<string, T> `
102- - ` ensureFunction(x: unknown): x ensure (...args: unknown[]) => unknown `
103- - ` ensureNull(x: unknown): x ensure null `
104- - ` ensureUndefined(x: unknown): x ensure undefined `
105- - ` ensureNone(x: unknown): x ensure null | undefined `
101+ - ` ensureObject<T extends unknown>(x: unknown, pred?: Predicate<T>): x is Record<string, T> `
102+ - ` ensureFunction(x: unknown): x is (...args: unknown[]) => unknown `
103+ - ` ensureNull(x: unknown): x is null `
104+ - ` ensureUndefined(x: unknown): x is undefined `
105+ - ` ensureNone(x: unknown): x is null | undefined `
106106
107107For example:
108108
@@ -145,6 +145,62 @@ ensureLike({}, b); // Now 'b' is 'Record<string, unknown>'
145145ensureLike ({ foo: " " , bar: 0 }, b ); // Now 'b' is '{foo: string, bar: number}'
146146```
147147
148+ ### requireXXXXX
149+
150+ The ` unknownutil ` provides the following require functions which returns a given
151+ ` x ` as is or raise ` EnsureError ` when that is not expected type.
152+
153+ - ` requireString(x: unknown): string `
154+ - ` requireNumber(x: unknown): number `
155+ - ` requireBoolean(x: unknown): boolean `
156+ - ` requireArray<T extends unknown>(x: unknown, pred?: Predicate<T>): T[] `
157+ - ` requireObject<T extends unknown>(x: unknown, pred?: Predicate<T>): Record<string, T> `
158+ - ` requireFunction(x: unknown): (...args: unknown[]) => unknown `
159+ - ` requireNull(x: unknown): null `
160+ - ` requireUndefined(x: unknown): undefined `
161+ - ` requireNone(x: unknown): null | undefined `
162+
163+ For example:
164+
165+ ``` typescript
166+ import { requireString } from " https://deno.land/x/unknownutil/mod.ts" ;
167+
168+ const a: unknown = " Hello" ;
169+ const a1 = requireString (a ); // Now 'a' and 'a1' is 'string'
170+
171+ const b: unknown = 0 ;
172+ const b1 = requireString (b ); // Raise EnsureError on above while 'b' is not string
173+ ```
174+
175+ Additionally, ` requireArray ` and ` requireObject ` supports an inner predicate
176+ function to predicate ` x ` more precisely like:
177+
178+ ``` typescript
179+ import { isString , requireArray } from " https://deno.land/x/unknownutil/mod.ts" ;
180+
181+ const a: unknown = [" a" , " b" , " c" ];
182+ const a1 = requireArray (a ); // Now 'a' and 'a1' is 'unknown[]'
183+ const a2 = requireArray (a , isString ); // Now 'a' and 'a2' is 'string[]'
184+
185+ const b: unknown = [0 , 1 , 2 ];
186+ const b1 = requireArray (b ); // Now 'b' and 'b1' is 'unknown[]'
187+ const b2 = requireArray (b , isString ); // Raise EnsureError on above while 'b' is not string array
188+ ```
189+
190+ Use ` requireLike ` if you need some complicated types like tuple or struct like:
191+
192+ ``` typescript
193+ import { requireLike } from " https://deno.land/x/unknownutil/mod.ts" ;
194+
195+ const a: unknown = [" a" , " b" , " c" ];
196+ const a1 = requireLike ([], a ); // Now 'a' and 'a1' is 'unknown[]'
197+ const a2 = requireLike ([" " , " " , " " ], a ); // Now 'a' and 'a2' is '[string, string, string]'
198+
199+ const b: unknown = { foo: " foo" , bar: 0 };
200+ const b1 = requireLike ({}, b ); // Now 'b' and 'b1' is 'Record<string, unknown>'
201+ const b2 = requireLike ({ foo: " " , bar: 0 }, b ); // Now 'b' and 'b2' is '{foo: string, bar: number}'
202+ ```
203+
148204## Development
149205
150206Lint code like:
0 commit comments