ManagedTypedValue · types
Interfaces, valeurs et contrats nommés de ManagedTypedValue.
Les types ci-dessous définissent les objets nommés et leurs relations. Les propriétés héritées sont incluses dans les tableaux. Les types dérivés d’un schéma renvoient à sa structure; une déclaration TypeScript ne remplace pas les contrôles sémantiques du compilateur.
ManagedIntegerValueSchema
Exact integers have their own declared bounds, not an implicit decimal scale or unsafe JSON number.
| Champ | Options / valeurs attendues | Description |
|---|---|---|
kind |
"integer" |
Requis. Sélectionne la variante et les propriétés admises dans cette branche. |
minimum |
string |
Requis. Borne de cardinalité ou de budget pour la ressource nommée. Les dépassements sont refusés; null signifie une absence de borne uniquement lorsque le schéma l’admet. |
maximum |
string |
Requis. Borne de cardinalité ou de budget pour la ressource nommée. Les dépassements sont refusés; null signifie une absence de borne uniquement lorsque le schéma l’admet. |
unit |
{ kind: "dimensionless"; } | { kind: "unit"; key: string; } | { kind: "currency"; key: string; } |
Requis. Définit « unit » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
export interface ManagedIntegerValueSchema {
readonly kind: 'integer';
readonly minimum: string;
readonly maximum: string;
readonly unit: ManagedExactDataUnit;
}
ManagedApproximateRealValueSchema
Approximation is explicitly binary64; tolerances are comparison policy, never input rounding.
| Champ | Options / valeurs attendues | Description |
|---|---|---|
kind |
"real" |
Requis. Sélectionne la variante et les propriétés admises dans cette branche. |
representation |
"binary64" |
Requis. Définit « representation » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
precisionBits |
53 |
Requis. Définit « precision Bits » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
minimum |
number |
Requis. Borne de cardinalité ou de budget pour la ressource nommée. Les dépassements sont refusés; null signifie une absence de borne uniquement lorsque le schéma l’admet. |
maximum |
number |
Requis. Borne de cardinalité ou de budget pour la ressource nommée. Les dépassements sont refusés; null signifie une absence de borne uniquement lorsque le schéma l’admet. |
tolerance |
{ readonly absolute: number; readonly relative: number; } |
Requis. Définit « tolerance » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
unit |
{ kind: "dimensionless"; } | { kind: "unit"; key: string; } |
Requis. Définit « unit » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
export interface ManagedApproximateRealValueSchema {
readonly kind: 'real';
readonly representation: 'binary64';
readonly precisionBits: 53;
readonly minimum: number;
readonly maximum: number;
readonly tolerance: { readonly absolute: number; readonly relative: number };
readonly unit: Exclude<ManagedExactDataUnit, { kind: 'currency' }>;
}
ManagedChoiceValueSchema
Labels have stable authored language keys; the selected label locale must exist for every choice.
| Champ | Options / valeurs attendues | Description |
|---|---|---|
kind |
"choice" |
Requis. Sélectionne la variante et les propriétés admises dans cette branche. |
labelLocale |
string |
Requis. Définit « label Locale » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
choices |
readonly { readonly key: string; readonly labels: Readonly<Record<string, string>>; }[] |
Requis. Définit « choices » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
export interface ManagedChoiceValueSchema {
readonly kind: 'choice';
readonly labelLocale: string;
readonly choices: readonly { readonly key: string; readonly labels: Readonly<Record<string, string>> }[];
}
ManagedTypedValueSchema
Closed value trees cannot declare identities, rights, Links, content kinds or arbitrary JSON branches.
export type ManagedTypedValueSchema =
| { readonly kind: 'text'; readonly minimumLength: number; readonly maximumLength: number }
| { readonly kind: 'boolean' }
| ManagedIntegerValueSchema
| ManagedApproximateRealValueSchema
| ManagedChoiceValueSchema
| { readonly kind: 'decimal'; readonly precision: number; readonly scale: number; readonly unit: ManagedExactDataUnit;
readonly minimum?: string | undefined; readonly maximum?: string | undefined }
| { readonly kind: 'object'; readonly properties: readonly {
readonly key: string; readonly required: boolean; readonly nullable: boolean;
readonly schema: ManagedTypedValueSchema;
}[] }
| { readonly kind: 'list'; readonly minimumItems: number; readonly maximumItems: number;
readonly itemsNullable: boolean; readonly items: ManagedTypedValueSchema };
type ManagedTypedValueSchema = ManagedIntegerValueSchema | ManagedApproximateRealValueSchema | ManagedChoiceValueSchema | { readonly kind: "text"; readonly minimumLength: number; readonly maximumLength: number; } | { readonly kind: "boolean"; } | { readonly kind: "decimal"; readonly precision: number; readonly scale: number; readonly unit: ManagedExactDataUnit; readonly minimum?: string | undefined; readonly maximum?: string | undefined; } | { readonly kind: "object"; readonly properties: readonly { readonly key: string; readonly required: boolean; readonly nullable: boolean; readonly schema: ManagedTypedValueSchema; }[]; } | { readonly kind: "list"; readonly minimumItems: number; readonly maximumItems: number; readonly itemsNullable: boolean; readonly items: ManagedTypedValueSchema; };
ManagedTypedValue
Canonical JSON primitives and closed composites retain null, empty objects/lists, false and zero distinctly.
export type ManagedTypedValue = string | number | boolean | null | readonly ManagedTypedValue[] | { readonly [key: string]: ManagedTypedValue };
type ManagedTypedValue = string | number | boolean | readonly ManagedTypedValue[] | { readonly [key: string]: ManagedTypedValue; } | null;
ManagedTypedFieldV2
A Field’s presence and outer repeatability remain separate from its typed value’s own list schema.
| Champ | Options / valeurs attendues | Description |
|---|---|---|
contract |
"ManagedTypedField@2" |
Requis. Discriminant exact de cette variante du contrat. Respecter la valeur littérale indiquée. |
key |
string |
Requis. Identifiant sémantique stable utilisé par les références; le modifier change l’identité. |
type |
"object" | "choice" | "integer" | "real" | "list" |
Requis. Définit « type » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
required |
boolean |
Requis. Indique si cette déclaration exige une valeur. |
repeatable |
boolean |
Requis. Indique si plusieurs valeurs ou instances sont admises. |
nullable |
boolean |
Requis. Définit « nullable » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
schema |
ManagedIntegerValueSchema | ManagedApproximateRealValueSchema | ManagedChoiceValueSchema | { readonly kind: "object"; readonly properties: readonly { readonly key: string; readonly required: boolean; readonly nullable: boolean; readonly schema: ManagedTypedValueSchema; }[]; } | { readonly kind: "list"; readonly minimumItems: number; readonly maximumItems: number; readonly itemsNullable: boolean; readonly items: ManagedTypedValueSchema; } |
Requis. Définit « schema » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
default |
ManagedTypedValue | undefined |
Facultatif. Valeur initiale conforme au type déclaré; ne remplace pas une valeur déjà enregistrée. |
export interface ManagedTypedFieldV2 {
readonly contract: 'ManagedTypedField@2';
readonly key: string;
readonly type: 'integer' | 'real' | 'choice' | 'object' | 'list';
readonly required: boolean;
readonly repeatable: boolean;
readonly nullable: boolean;
readonly schema: Exclude<ManagedTypedValueSchema, { kind: 'text' | 'boolean' | 'decimal' }>;
readonly default?: ManagedTypedValue | undefined;
}
Exemples appliqués : Texte requis et choix métier
Entreprise utilise une saisie texte obligatoire; État réutilise une liste de valeurs déclarées.
Configuration
Fragment à placer dans forms[].fields[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceFormControl@2",
"repeatable": false,
"key": "company",
"label": "Entreprise",
"input": "text",
"binding": {
"kind": "field",
"fieldKey": "company"
},
"required": true,
"ruleKeys": [],
"options": []
}
Variante et raccordement
Fragment à placer dans forms[].fields[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceFormControl@2",
"repeatable": false,
"key": "status",
"label": "État",
"input": "choice",
"binding": {
"kind": "field",
"fieldKey": "status"
},
"required": true,
"ruleKeys": [],
"options": [
"prospect",
"active"
]
}
Exemple de disposition UI
La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.
- Identité du client
- Notes et suivi
- Paramètres
- Soumissions liées
Le client souhaite préparer une proposition pour son nouveau projet. Préciser les besoins et confirmer le budget avant la revue.
Texte éditable dans la Surface