ReadonlyderivedPresent only while a rule deriving it matches, so commands never add or remove it. Not on a shared component.
ReadonlyreduceOn a resource, the operator systems reduce into it with: each run that a contributor runs in starts it at the operator's identity and leaves it holding the fold of every contribution. Booleans fold bitwise.
ReadonlyreferenceOn an entity-valued component: when its target despawns, owner despawns the holder and weak removes the
component. Not on a derived component, whose target only a command could set.
ReadonlysharedOn a component of comparable data (numbers, booleans, strings, arrays and plain objects of those): each archetype
holds one value of it for every entity it holds, so entities of equal values share an archetype. Rows read it as
their archetype's value; commands.add with another value moves the entity. Not on a derived component or a
reference, and it has no thread: every thread reads it.
ReadonlythreadThe logical thread an object lives on, "world" without it. Not on a struct or a string, which live in shared
memory. A DOM Node lives on "main", and says so.
ReadonlytransferThe value may be moved, never copied, to its thread: only a Transferable value.
ReadonlytypeThe value type: declared as a TypeScript type, registered as a schema for it when it's data.
ReadonlywithinExists only while its host component does, and is removed with it. Not on a derived component, which its rule covers.
The value each trait allows on the component or resource
N. Augment it, with this exact type parameter, to define a trait, keyed by aSymbol()constant of the same module, which the build registers. A trait that doesn't apply toNresolves tonever. An allowed value may look atN's own traits and at the one component a declared value names, never map over every component, or checking grows with the square of the component count.