I have noticed that the t.optional is equivalent to T|undefined|null which may be a quite different behaviour from T|undefined and T, in particular with the new typescript 4.4 --exactOptionalPropertyTypes
Would be possible to add to more optionals to the library? In the specific:
optionalNonNull for undefined properties, compliant with typescript without --exactOptionalPropertyTypes
// Type definition
export declare const optionalNonNull: <RT extends t.Mixed>(rt: RT, name?: string | undefined) => t.UnionC<[RT, t.UndefinedC]> & Optional;
// Implementation
export const optionalNonNull = <RT extends t.Mixed>(rt: RT, name?: string) => {
const unionType = union([rt, undefinedType], name || rt.name + '?');
return Object.assign(unionType, { optional: true } as Optional);
};
optionalExact for exact properties, compliant with typescript with --exactOptionalPropertyTypes
// Type definition
export declare const optionalExact: <RT extends t.Mixed>(rt: RT) => RT & Optional;
// Implementation
export const optionalExact = <RT extends t.Mixed>(rt: RT) => {
return Object.assign(rt, { optional: true } as Optional);
};
I have noticed that the
t.optionalis equivalent toT|undefined|nullwhich may be a quite different behaviour fromT|undefinedandT, in particular with the new typescript 4.4--exactOptionalPropertyTypesWould be possible to add to more optionals to the library? In the specific:
optionalNonNull for undefined properties, compliant with typescript without
--exactOptionalPropertyTypesoptionalExact for exact properties, compliant with typescript with
--exactOptionalPropertyTypes