Skip to main content
Module

x/scaffold/src/deps/types.ts>Schema

scaffold your next project with style and 💗
Latest
type alias Schema
import { type Schema } from "https://deno.land/x/scaffold@0.3.0/src/deps/types.ts";

Create a deep version of another object type where property values are recursively replaced into a given value type.

Use-cases:

  • Form validation: Define how each field should be validated.
  • Form settings: Define configuration for input fields.
  • Parsing: Define types that specify special behavior for specific fields.

Examples

Example 1

import type {Schema} from 'type-fest';

interface User {
	id: string;
	name: {
		firstname: string;
		lastname: string;
	};
	created: Date;
	active: boolean;
	passwordHash: string;
}

type UserMask = Schema<User, 'mask' | 'hide' | 'show'>;

const userMaskSettings: UserMask = {
	id: 'show',
	name: {
		firstname: 'show',
		lastname: 'mask',
	},
	phoneNumbers: 'mask',
	created: 'show',
	active: 'show',
	passwordHash: 'hide',
}

Type Parameters

ObjectType
ValueType
definition: ObjectType extends string ? ValueType : ObjectType extends Map<unknown, unknown> ? ValueType : ObjectType extends Set<unknown> ? ValueType : ObjectType extends ReadonlyMap<unknown, unknown> ? ValueType : ObjectType extends ReadonlySet<unknown> ? ValueType : ObjectType extends readonly unknown[] ? ValueType : ObjectType extends unknown[] ? ValueType : ObjectType extends (...arguments: unknown[]) => unknown ? ValueType : ObjectType extends Date ? ValueType : ObjectType extends Function ? ValueType : ObjectType extends RegExp ? ValueType : ObjectType extends object ? SchemaObject<ObjectType, ValueType> : ValueType