Skip to content

Commit 52e5876

Browse files
authored
fix(types): Array required() and defined() will no longer return any (#1256)
* Array required() and defined() will no longer return any * Array required and defined test improvements * Array nullable() will not return any + use ESLint comment to test array defined and array required
1 parent da23aea commit 52e5876

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/array.ts

+14
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,20 @@ export default class ArraySchema<
261261
if (this.innerType) base.innerType = this.innerType.describe();
262262
return base;
263263
}
264+
265+
nullable(isNullable?: true): ArraySchema<T, C, TIn | null>;
266+
nullable(isNullable: false): ArraySchema<T, C, Exclude<TIn, null>>;
267+
nullable(isNullable = true): ArraySchema<T, C, TIn | null> {
268+
return super.nullable(isNullable as any);
269+
}
270+
271+
defined(): DefinedArraySchema<T, C, TIn> {
272+
return super.defined();
273+
}
274+
275+
required(msg?: MixedLocale['required']): RequiredArraySchema<T, C, TIn> {
276+
return super.required(msg);
277+
}
264278
}
265279

266280
create.prototype = ArraySchema.prototype;

test/types.ts

+14
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,20 @@ SchemaOf: {
264264
const _c1 = array(number())
265265
.concat(array(number()).required())
266266
.validateSync([]);
267+
268+
// $ExpectType AssertsShape<{ a: RequiredNumberSchema<number | undefined, Record<string, any>>; }>[] | null
269+
const _definedArray: Array<{ a: number }> | null = array()
270+
.of(object({ a: number().required() }))
271+
.nullable()
272+
.defined()
273+
.validateSync([]);
274+
275+
// $ExpectType AssertsShape<{ a: RequiredNumberSchema<number | undefined, Record<string, any>>; }>[]
276+
const _requiredArray: Array<{ a: number }> = array()
277+
.of(object({ a: number().required() }))
278+
.nullable()
279+
.required()
280+
.validateSync([]);
267281
}
268282

269283
{

0 commit comments

Comments
 (0)