Files
typebox/test/static/function.ts
glm-5.1 bd758c2342 Fork from @sinclair/typebox 0.34.49 as @alkdev/typebox
- 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)
2026-04-23 13:22:31 +00:00

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>()
}