Skip to main content

SchemaStatics Interface

Stateless APIs exposed via SchemaFactory as both instance properties and as statics.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Sealed

This type is "sealed," meaning that code outside of the library defining it should not implement or extend it. Future versions of this type may add members or make typing of readonly members more specific.

Signature​

/** @sealed */
export interface SchemaStatics

Properties​

PropertyModifiersTypeDescription
booleanreadonlyLeafSchema<"boolean", boolean>TreeNodeSchema for holding a boolean.
handlereadonlyLeafSchema<"handle", IFluidHandle>TreeNodeSchema for holding an IFluidHandle.
leavesreadonlyreadonly [ SchemaStatics["string"], SchemaStatics["number"], SchemaStatics["boolean"], SchemaStatics["null"], SchemaStatics["handle"] ]AllowedTypes for holding any of the leaf types.
nullreadonlyLeafSchema<"null", null>TreeNodeSchema for JavaScript null.
numberreadonlyLeafSchema<"number", number>TreeNodeSchema for holding a JavaScript number.
optionalreadonly<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>Make a field optional instead of the default, which is required.
optionalRecursivereadonly<const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>optional except tweaked to work better for recursive types. Use with ValidateRecursiveSchema for improved type safety.
requiredreadonly<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => FieldSchema<FieldKind.Required, T, TCustomMetadata>Make a field explicitly required.
requiredRecursivereadonly<const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>required except tweaked to work better for recursive types. Use with ValidateRecursiveSchema for improved type safety.
stringreadonlyLeafSchema<"string", string>TreeNodeSchema for holding a JavaScript string.

Property Details​

boolean​

TreeNodeSchema for holding a boolean.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly boolean: LeafSchema<"boolean", boolean>;

Type: LeafSchema<"boolean", boolean>

handle​

TreeNodeSchema for holding an IFluidHandle.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly handle: LeafSchema<"handle", IFluidHandle>;

Type: LeafSchema<"handle", IFluidHandle>

leaves​

AllowedTypes for holding any of the leaf types.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly leaves: readonly [
SchemaStatics["string"],
SchemaStatics["number"],
SchemaStatics["boolean"],
SchemaStatics["null"],
SchemaStatics["handle"]
];

Type: readonly [ SchemaStatics["string"], SchemaStatics["number"], SchemaStatics["boolean"], SchemaStatics["null"], SchemaStatics["handle"] ]

null​

TreeNodeSchema for JavaScript null.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly null: LeafSchema<"null", null>;

Type: LeafSchema<"null", null>

Remarks​

There are good reasons to avoid using null in JavaScript, however sometimes it is desired. This TreeNodeSchema node provides the option to include nulls in trees when desired. Unless directly inter-operating with existing data using null, consider other approaches, like wrapping the value in an optional field, or using a more specifically named empty object node.

number​

TreeNodeSchema for holding a JavaScript number.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly number: LeafSchema<"number", number>;

Type: LeafSchema<"number", number>

Remarks​

The number is a double-precision 64-bit binary format IEEE 754 value, however there are some exceptions:

  • NaN, and the infinities are converted to null (and may therefore only be used where null is allowed by the schema).
  • -0 may be converted to 0 in some cases.

These limitations match the limitations of JSON.

optional​

Make a field optional instead of the default, which is required.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;

Type: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>

optionalRecursive​

optional except tweaked to work better for recursive types. Use with ValidateRecursiveSchema for improved type safety.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;

Type: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>

Remarks​

This version of optional has fewer type constraints to work around TypeScript limitations, see Unenforced. See ValidateRecursiveSchema for additional information about using recursive schema.

required​

Make a field explicitly required.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;

Type: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => FieldSchema<FieldKind.Required, T, TCustomMetadata>

Remarks​

Fields are required by default, but this API can be used to make the required nature explicit in the schema, and allows associating custom properties with the field.

requiredRecursive​

required except tweaked to work better for recursive types. Use with ValidateRecursiveSchema for improved type safety.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;

Type: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>

Remarks​

This version of required has fewer type constraints to work around TypeScript limitations, see Unenforced. See ValidateRecursiveSchema for additional information about using recursive schema.

string​

TreeNodeSchema for holding a JavaScript string.

This API is reserved for internal system use and should not be imported directly. It may change at any time without notice.

For more information about our API support guarantees, see here.

Signature​

readonly string: LeafSchema<"string", string>;

Type: LeafSchema<"string", string>

Remarks​

Strings containing unpaired UTF-16 surrogate pair code units may not be handled correctly.

These limitations come from the use of UTF-8 encoding of the strings, which requires them to be valid unicode. JavaScript does not make this requirement for its strings so not all possible JavaScript strings are supported.