From 8092218b4411a6869d6199d75dd3b23bd3c3c550 Mon Sep 17 00:00:00 2001 From: Jason Quense Date: Fri, 4 Dec 2020 09:15:18 -0500 Subject: [PATCH] fix: some strict fn type improvements --- src/Condition.ts | 2 +- src/number.ts | 2 +- src/object.ts | 5 ++++- src/util/createValidation.ts | 6 +++--- test/types.ts | 3 +++ tsconfig.json | 3 ++- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Condition.ts b/src/Condition.ts index d4148cd56..78daa0850 100644 --- a/src/Condition.ts +++ b/src/Condition.ts @@ -68,7 +68,7 @@ class Condition { ref.getValue(options?.value, options?.parent, options?.context), ); - let schema = this.fn.apply(base, values.concat(base, options)); + let schema = this.fn.apply(base, values.concat(base, options) as any); if (schema === undefined || schema === base) return base; diff --git a/src/number.ts b/src/number.ts index 5014957ca..20db17e8e 100644 --- a/src/number.ts +++ b/src/number.ts @@ -1,6 +1,6 @@ import { MixedLocale, number as locale } from './locale'; import isAbsent from './util/isAbsent'; -import type { AnyObject, Maybe } from './types'; +import type { AnyObject, Maybe, Message } from './types'; import type Reference from './Reference'; import type { Defined, If, Thunk } from './util/types'; import BaseSchema from './schema'; diff --git a/src/object.ts b/src/object.ts index d375ff84b..6a66f6c76 100644 --- a/src/object.ts +++ b/src/object.ts @@ -27,7 +27,10 @@ export type Assign = { export type AnyObject = Record; -export type ObjectShape = Record>; +export type ObjectShape = Record< + string, + AnySchema | Reference | Lazy +>; export type DefaultFromShape = { [K in keyof Shape]: Shape[K] extends ObjectSchema diff --git a/src/util/createValidation.ts b/src/util/createValidation.ts index d41fbeb26..a6cefefee 100644 --- a/src/util/createValidation.ts +++ b/src/util/createValidation.ts @@ -13,7 +13,7 @@ import type { AnySchema } from '../schema'; export type CreateErrorOptions = { path?: string; - message?: Message; + message?: Message; params?: ExtraParams; type?: string; }; @@ -45,7 +45,7 @@ export type TestOptions = { export type TestConfig = { name?: string; - message?: Message; + message?: Message; test: TestFunction; params?: ExtraParams; exclusive?: boolean; @@ -59,7 +59,7 @@ export default function createValidation(config: { name?: string; test: TestFunction; params?: ExtraParams; - message?: Message; + message?: Message; }) { function validate( { diff --git a/test/types.ts b/test/types.ts index a67c20307..2c817bc82 100644 --- a/test/types.ts +++ b/test/types.ts @@ -79,6 +79,9 @@ string().required().nullable(); lazy: lazy(() => number().required()), }); + const foo = object({ + string: string().default(''), + }); // type F = StringSchema; // type f = F extends TypedSchema ? F['__inputType'] : false; diff --git a/tsconfig.json b/tsconfig.json index 53149fb50..d02ef306f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,8 @@ "extends": "@4c/tsconfig/web", "compilerOptions": { "allowJs": true, - "rootDir": "src" + "rootDir": "src", + "strictFunctionTypes": true }, "include": ["src"] }