- Rename package from @sinclair/typebox to @alkdev/typebox - Update author, repository, and homepage to alkdev - Remove GitHub workflows, .vscode config, and branding assets - Update all source, test, example, changelog, and task imports - Update tsconfig.json path mappings - Clean up readme header (remove upstream badges/branding)
55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { Expect } from './assert'
|
|
import { Type } from '@alkdev/typebox'
|
|
|
|
{
|
|
// simple
|
|
const T = Type.Function([Type.Number(), Type.Boolean()], Type.String())
|
|
Expect(T).ToStatic<(param_0: number, param_1: boolean) => string>()
|
|
}
|
|
{
|
|
// nested
|
|
// prettier-ignore
|
|
const T = Type.Function([Type.Number(), Type.String()], Type.Object({
|
|
method: Type.Function([Type.Number(), Type.String()], Type.Boolean()),
|
|
}))
|
|
Expect(T).ToStatic<(param_0: number, param_1: string) => { method: (param_0: number, param_1: string) => boolean }>()
|
|
}
|
|
{
|
|
// readonly-optional
|
|
const T = Type.Function([Type.ReadonlyOptional(Type.Array(Type.Number()))], Type.Number())
|
|
Expect(T).ToStaticDecode<(param_0?: readonly number[]) => number>()
|
|
}
|
|
{
|
|
// readonly
|
|
const T = Type.Function([Type.Readonly(Type.Array(Type.Number()))], Type.Number())
|
|
Expect(T).ToStaticDecode<(param_0: readonly number[]) => number>()
|
|
}
|
|
{
|
|
// optional 1
|
|
const T = Type.Function([Type.Optional(Type.Number())], Type.Number())
|
|
Expect(T).ToStaticDecode<(param_0?: number) => number>()
|
|
}
|
|
{
|
|
// optional 2
|
|
const T = Type.Function([Type.Number(), Type.Optional(Type.Number())], Type.Number())
|
|
Expect(T).ToStaticDecode<(param_0: number, param_1?: number) => number>()
|
|
}
|
|
const F = Type.Constructor([Type.Readonly(Type.Array(Type.String()))], Type.Number())
|
|
|
|
{
|
|
// decode 2
|
|
const S = Type.Transform(Type.Integer())
|
|
.Decode((value) => new Date(value))
|
|
.Encode((value) => value.getTime())
|
|
const T = Type.Function([S], Type.String())
|
|
Expect(T).ToStaticDecode<(param_0: Date) => string>()
|
|
}
|
|
{
|
|
// decode 1
|
|
const S = Type.Transform(Type.Integer())
|
|
.Decode((value) => new Date(value))
|
|
.Encode((value) => value.getTime())
|
|
const T = Type.Function([Type.Number()], S)
|
|
Expect(T).ToStaticDecode<(param_0: number) => Date>()
|
|
}
|