Verwendung

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

Typdeklaration

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;
  };
}

Mitglieder 1

NameTypErforderlichBeschreibung
~standardschreibgeschützt{ readonly version: 1; readonly vendor: string; readonly validate: (value: unknown) => SchemaResult<T> | Promise<SchemaResult<T>>; readonly types?: { readonly input: unknown; readonly output: T; } | undefined;}Ja—
~standard — verschachtelte Felder

~standard Felder

NameTypErforderlichBeschreibung
versionschreibgeschützt1Ja—
vendorschreibgeschütztstringJa—
validateschreibgeschützt(value: unknown) => SchemaResult<T> | Promise<SchemaResult<T>>Ja—
typesschreibgeschützt{ readonly input: unknown; readonly output: T;}Nein—
validate — Methodensignaturen

Signaturen

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

Parameter

NameTypErforderlichBeschreibung
valueunknownJa—

Rückgabe

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

types — verschachtelte Felder

types Felder

NameTypErforderlichBeschreibung
inputschreibgeschütztunknownJa—
outputschreibgeschütztTJa—
Generiert aus den öffentlichen TypeScript-Deklarationen: Signaturen, Props und Standardwerte stammen aus der geprüften Quelle, Beschreibungen aus deren JSDoc. Kein Standardwert ist erfunden.