API reference › @evolu/common › Type › SetType
Defined in: packages/common/src/Type.ts:2651
SetType extends Type with an additional element property for reflection.
Extends
Type<"Set",ReadonlySet<InferType<ElementType>>,ReadonlySet<InferInput<ElementType>>,SetError<InferError<ElementType>>,ReadonlySet<InferParent<ElementType>>,SetError<InferParentError<ElementType>>>
Properties
[EvoluTypeSymbol]
readonly [EvoluTypeSymbol]: true;
Defined in: packages/common/src/Type.ts:410
Inherited from
~standard
readonly ~standard: Props<ReadonlySet<InferInput<ElementType>>, ReadonlySet<InferType<ElementType>>>;
Defined in: packages/common/src/Type.ts:4878
The Standard Schema properties.
Inherited from
element
readonly element: ElementType;
Defined in: packages/common/src/Type.ts:2659
Error
Error: SetError<InferError<ElementType>>;
Defined in: packages/common/src/Type.ts:270
The specific error introduced by this Type.
Example
type StringError = typeof String.Error;
Inherited from
Errors
readonly Errors:
| SetError<InferError<ElementType>>
| SetError<InferParentError<ElementType>>;
Defined in: packages/common/src/Type.ts:474
Example
type StringParentErrors = typeof String.Errors;
Inherited from
from
readonly from: (value: ReadonlySet) => Result<ReadonlySet<InferType<ElementType>>,
| SetError<InferError<ElementType>>
| SetError<InferParentError<ElementType>>>;
Defined in: packages/common/src/Type.ts:285
Creates T from an Input value.
This is useful when we have a typed value.
from is a typed alias of fromUnknown.
Inherited from
fromParent
readonly fromParent: (value: ReadonlySet) => Result<ReadonlySet<InferType<ElementType>>, SetError<InferError<ElementType>>>;
Defined in: packages/common/src/Type.ts:387
Creates T from Parent type.
This function skips parent Types validations when we have already partially validated value.
Inherited from
fromUnknown
readonly fromUnknown: (value: unknown) => Result<ReadonlySet<InferType<ElementType>>,
| SetError<InferError<ElementType>>
| SetError<InferParentError<ElementType>>>;
Defined in: packages/common/src/Type.ts:379
Creates T from an unknown value.
This is useful when a value is unknown.
Inherited from
Input
Input: ReadonlySet<InferInput<ElementType>>;
Defined in: packages/common/src/Type.ts:268
The type expected by from and fromUnknown.
Example
type StringInput = typeof String.Input;
Inherited from
is
readonly is: Refinement<unknown, ReadonlySet<InferType<ElementType>>>;
Defined in: packages/common/src/Type.ts:408
A type guard that checks whether an unknown value satisfies the Type.
Example
const value: unknown = "hello";
if (String.is(value)) {
// TypeScript now knows `value` is a `string` 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"]
Inherited from
name
readonly name: "Set";
Defined in: packages/common/src/Type.ts:276
Inherited from
orNull
readonly orNull: (value: ReadonlySet) =>
| ReadonlySet<InferType<ElementType>>
| null;
Defined in: packages/common/src/Type.ts:372
Creates 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
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));
}
Inherited from
orThrow
readonly orThrow: (value: ReadonlySet) => ReadonlySet;
Defined in: packages/common/src/Type.ts:341
Creates T from an Input value, throwing an error if validation fails.
Use this where failure should crash the current flow instead of being handled locally.
Throws an Error with the Type validation error in its cause property,
making it debuggable while avoiding the need for custom error messages.
This is a convenience method that combines from with getOrThrow.
When to use:
- Application startup or composition-root setup where errors must stop the
program immediately. In Evolu apps, errors are handled by
platform-specific
createRunadapters at the app boundary. - Module-level constants
- Test setup with values that are expected to be valid
- As an alternative to assertions when the Type error in the thrown Error's
causeprovides sufficient debugging information
Prefer from in ordinary application logic where the caller can recover,
show validation errors, or choose a different flow.
For clearer test failure messages on invalid input, use Vitest
schemaMatching + assert with .is().
Example
// Good: Known valid constant
const maxRetries = PositiveInt.orThrow(3);
// Good: App configuration that should crash on invalid values
const appName = Name.orThrow("MyApp");
// Good: Instead of assert when Type error is clear enough
// Context makes it obvious: count increments from non-negative value
const currentCount = counts.get(id) ?? 0;
const newCount = PositiveInt.orThrow(currentCount + 1);
// Good: Test setup with known valid values
const testUser = User.orThrow({ name: "Alice", age: 30 });
// 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
}
Inherited from
Parent
Parent: ReadonlySet<InferParent<ElementType>>;
Defined in: packages/common/src/Type.ts:272
The parent type.
Example
type StringParent = typeof String.Parent;
Inherited from
ParentError
ParentError: SetError<InferParentError<ElementType>>;
Defined in: packages/common/src/Type.ts:274
The parent's error.
Example
type StringParentError = typeof String.ParentError;
Inherited from
Type
readonly Type: ReadonlySet;
Defined in: packages/common/src/Type.ts:421
The type this Type resolves to.
Example
type String = typeof String.Type;