Skip to content

Commit e9e0123

Browse files
authored
fix: transform undefined (#8)
1 parent 94abdf5 commit e9e0123

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/index.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,15 @@ import type {
1616
Values,
1717
} from './interface';
1818
import { messages as defaultMessages, newMessages } from './messages';
19-
import { asyncMap, complementError, convertFieldsError, deepMerge, format, warning } from './util';
19+
import {
20+
asyncMap,
21+
complementError,
22+
convertFieldsError,
23+
deepMerge,
24+
format,
25+
isEmptyValue,
26+
warning,
27+
} from './util';
2028
import validators from './validator/index';
2129

2230
export * from './interface';
@@ -146,7 +154,10 @@ class Schema {
146154
source = { ...source };
147155
}
148156
value = source[z] = rule.transform(value);
149-
rule.type ??= (Array.isArray(value) ? 'array' : typeof value) as RuleType;
157+
const type = rule.type || ((Array.isArray(value) ? 'array' : typeof value) as RuleType);
158+
if (!isEmptyValue(value, type)) {
159+
rule.type = type;
160+
}
150161
}
151162
if (typeof rule === 'function') {
152163
rule = {

tests/number.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,13 @@ describe('number', () => {
161161
done();
162162
});
163163
});
164+
it('transform undefined', done => {
165+
const value = { v: [0, 1] };
166+
new Schema({
167+
v: { required: true, transform: v => undefined },
168+
}).validate(value, errors => {
169+
expect(errors).toBeTruthy();
170+
done();
171+
});
172+
});
164173
});

0 commit comments

Comments
 (0)