Utilização

Persist a preference

tsx
import { Text, Toggle, VStack, persisted, type Schema } from 'kuito';

const booleanSchema: Schema<boolean> = {
  '~standard': {
    version: 1,
    vendor: 'example',
    validate: (value) =>
      typeof value === 'boolean' ? { value } : { issues: [{ message: 'Expected boolean' }] },
  },
};

export function Preferences() {
  const wifiOnly = persisted(true, { key: 'downloads.wifiOnly', schema: booleanSchema });
  return (
    <VStack gap={12}>
      <Toggle label="Download on Wi-Fi only" checked={wifiOnly} />
      <Text>{wifiOnly.value ? 'Wi-Fi only' : 'Any connection'}</Text>
    </VStack>
  );
}

Declaração do tipo

ts
export interface Schema<T> {
  readonly '~standard': {
    readonly version: 1;
    readonly vendor: string;
    readonly validate: (value: unknown) => SchemaResult<T> | Promise<SchemaResult<T>>;
    readonly types?: { readonly input: unknown; readonly output: T } | undefined;
  };
}

Membros 1

NomeTipoObrigatórioDescrição
~standardsó de leitura{ readonly version: 1; readonly vendor: string; readonly validate: (value: unknown) => SchemaResult<T> | Promise<SchemaResult<T>>; readonly types?: { readonly input: unknown; readonly output: T; } | undefined;}Sim—
~standard — campos aninhados

~standard campos

NomeTipoObrigatórioDescrição
versionsó de leitura1Sim—
vendorsó de leiturastringSim—
validatesó de leitura(value: unknown) => SchemaResult<T> | Promise<SchemaResult<T>>Sim—
typessó de leitura{ readonly input: unknown; readonly output: T;}Não—
validate — assinaturas de método

Assinaturas

ts
(value: unknown): SchemaResult<T> | Promise<SchemaResult<T>>

Parâmetros

NomeTipoObrigatórioDescrição
valueunknownSim—

Devolve

SchemaResult<T> | Promise<SchemaResult<T>>

types — campos aninhados

types campos

NomeTipoObrigatórioDescrição
inputsó de leituraunknownSim—
outputsó de leituraTSim—
Gerado a partir das declarações TypeScript públicas: assinaturas, props e predefinições vêm da fonte verificada, as descrições da sua JSDoc. Nenhuma predefinição é inventada.