API reference / @evolu/common / Type / RecursiveType

Interface: RecursiveType<ParentType>

Defined in: packages/common/src/Type.ts:3151

The Standard Schema interface.

Extends

Type Parameters

Type Parameter
ParentType extends AnyType

Properties

PropertyModifierTypeDescriptionInherited fromDefined in
[EvoluTypeSymbol]readonlytrue-Type.[EvoluTypeSymbol]packages/common/src/Type.ts:315
~standardreadonlyProps<InferInput<ParentType>, InferType<ParentType>>The Standard Schema properties.Type.~standardpackages/common/src/Type.ts:4216
ErrorpublicInferError<ParentType>The specific error introduced by this Type. ### Example type StringError = typeof String.Error;Type.Errorpackages/common/src/Type.ts:197
Errorsreadonly| InferError<ParentType> | InferParentError<ParentType>Error / ParentError ### Example type StringParentErrors = typeof String.Errors;Type.Errorspackages/common/src/Type.ts:381
fromreadonly(value) => Result<InferType<ParentType>, | InferError<ParentType> | InferParentError<ParentType>>Creates T from an Input value. This is useful when we have a typed value. from is a typed alias of fromUnknown.Type.frompackages/common/src/Type.ts:212
fromParentreadonly(value) => Result<InferType<ParentType>, InferError<ParentType>>Creates T from Parent type. This function skips parent Types validations when we have already partially validated value.Type.fromParentpackages/common/src/Type.ts:292
fromUnknownreadonly(value) => Result<InferType<ParentType>, | InferError<ParentType> | InferParentError<ParentType>>Creates T from an unknown value. This is useful when a value is unknown.Type.fromUnknownpackages/common/src/Type.ts:284
InputpublicInferInput<ParentType>The type expected by from and fromUnknown. ### Example type StringInput = typeof String.Input;Type.Inputpackages/common/src/Type.ts:195
isreadonly(value) => value is InferType<ParentType>A type guard that checks whether an unknown value satisfies the Type. ### Example const value: unknown = "hello"; if (String.is(value)) { // TypeScript now knows valueis astring here. console.log("This is a valid string!"); } const strings: unknown[] = [1, "hello", true, "world"]; const filteredStrings = strings.filter(String.is); console.log(filteredStrings); // ["hello", "world"]Type.ispackages/common/src/Type.ts:313
namereadonly"Recursive"-Type.namepackages/common/src/Type.ts:203
orNullreadonly(value) => | InferType<ParentType> | nullCreates T from an Input value, returning null if validation fails. This is a convenience method that combines from with getOrNull. When to use: - When you need to convert a validation result to a nullable value - When the error is not important and you just want the value or nothing - APIs that expect T or null ### Example // ✅ Good: Optional user input const age = PositiveInt.orNull(userInput); if (age != null) { console.log("Valid age:", age); } // ✅ Good: Default fallback const maxRetries = PositiveInt.orNull(config.retries) ?? 3; // ❌ Avoid: When you need to know why validation failed (use from instead) const result = PositiveInt.from(userInput); if (!result.ok) { console.error(formatPositiveError(result.error)); }Type.orNullpackages/common/src/Type.ts:277
orThrowreadonly(value) => InferTypeCreates T from an Input value, throwing an error if validation fails. This is a convenience method that combines from with getOrThrow. When to use: - Configuration values that are guaranteed to be valid (e.g., hardcoded constants) - Application startup where failure should crash the program - Test code with known valid inputs ### Example // ✅ Good: Known valid constant const maxRetries = PositiveInt.orThrow(3); // ✅ Good: App configuration that should crash on invalid values const appName = SimpleName.orThrow("MyApp"); // ❌ Avoid: User input (use from instead) const userAge = PositiveInt.orThrow(userInput); // Could crash! // ✅ Better: Handle user input gracefully const ageResult = PositiveInt.from(userInput); if (!ageResult.ok) { // Handle validation error }Type.orThrowpackages/common/src/Type.ts:245
ParentpublicInferParent<ParentType>The parent type. ### Example type StringParent = typeof String.Parent;Type.Parentpackages/common/src/Type.ts:199
ParentErrorpublicInferParentError<ParentType>The parent's error. ### Example type StringParentError = typeof String.ParentError;Type.ParentErrorpackages/common/src/Type.ts:201
TypereadonlyInferTypeThe type this Type resolves to. ### Example type String = typeof String.Type;Type.Typepackages/common/src/Type.ts:326

Methods

getParentType()

getParentType(): ParentType;

Defined in: packages/common/src/Type.ts:3160

Returns

ParentType

Was this page helpful?