Revision 0.32.9 (#731)

* Optimize Composite

* Set and Composite Tests

* Version
This commit is contained in:
sinclairzx81
2024-01-13 00:01:44 +09:00
committed by GitHub
parent 9adcb58f22
commit dcf48f3232
16 changed files with 536 additions and 75 deletions
+58 -1
View File
@@ -1,5 +1,5 @@
import { Expect } from './assert'
import { Type, TObject, TIntersect, TNumber, TBoolean } from '@sinclair/typebox'
import { Type, TOptional, TObject, TIntersect, TNumber, TBoolean } from '@sinclair/typebox'
// ----------------------------------------------------------------------------
// Overlapping - Non Varying
@@ -127,3 +127,60 @@ import { Type, TObject, TIntersect, TNumber, TBoolean } from '@sinclair/typebox'
Type.Object({ x: Type.Boolean() })
])
}
// ------------------------------------------------------------------
// Intersect
// ------------------------------------------------------------------
// prettier-ignore
{
const T: TObject<{
x: TNumber;
y: TNumber;
z: TNumber;
}> = Type.Composite([
Type.Intersect([
Type.Object({ x: Type.Number() }),
Type.Object({ y: Type.Number() }),
]),
Type.Intersect([
Type.Object({ z: Type.Number() })
])
])
}
// prettier-ignore
{
const T: TObject<{
x: TIntersect<[TNumber, TNumber]>;
y: TIntersect<[TNumber, TNumber]>;
}> = Type.Composite([
Type.Intersect([
Type.Object({ x: Type.Number() }),
Type.Object({ y: Type.Number() }),
]),
Type.Intersect([
Type.Object({ x: Type.Number() }),
Type.Object({ y: Type.Number() }),
])
])
}
// prettier-ignore
{
const T: TObject<{
x: TIntersect<[TNumber, TNumber]>;
}> = Type.Composite([
Type.Intersect([
Type.Object({ x: Type.Optional(Type.Number()) }),
Type.Object({ x: Type.Number() }),
])
])
}
// prettier-ignore
{
const T: TObject<{
x: TOptional<TIntersect<[TNumber, TNumber]>>;
}> = Type.Composite([
Type.Intersect([
Type.Object({ x: Type.Optional(Type.Number()) }),
Type.Object({ x: Type.Optional(Type.Number()) }),
])
])
}