Category () : ResourceShape < [ () => ResourceShape < [ () => ResourceShape < [ ] , { label : NoInfer < { forward : ...
} > & PropertyConstraints < string > & { kind : "property" ; range : Range < (...)
, (...)
, (...)
> ; } ; comment : NoInfer < { forward : ...
} > & PropertyConstraints < string > & { kind : "property" ; range : Range < (...)
, (...)
, (...)
> ; } ; } , > , ] , { id : Id ; type : Type ; created : NoInfer < { hidden : true } > & PropertyConstraints < string > & { kind : "property" ; range : Range < < const C extends StringValueConstraints < string > = {} > ( constraints ?: C , ) => StringShape < Legal < (...)
, (...)
> > , 1 , 1 , > ; } ; updated : NoInfer < { hidden : true } > & PropertyConstraints < string > & { kind : "property" ; range : Range < < const C extends StringValueConstraints < string > = {} > ( constraints ?: C , ) => StringShape < Legal < (...)
, (...)
> > , undefined , 1 , > ; } ; } , > , ] , { label : PropertyConstraints < string > & { kind : "property" ; range : Range < DictionaryConstraints & { kind : "dictionary" } & { uniqueLang : true } , 1 , 1 , > ; } ; comment : PropertyConstraints < string > & { kind : "property" ; range : Range < DictionaryConstraints & { kind : "dictionary" } & { uniqueLang : true } , undefined , 1 , > ; } ; featured : PropertyConstraints < string > & { kind : "property" ; range : Range < { < const C extends BooleanConstraints < boolean > = {} > ( constraints ?: C , ) : BooleanShape < Legal < C , boolean > > ; < const V extends boolean > ( value : V ) : BooleanShape < V > ; } , 1 , 1 , > ; } ; code : PropertyConstraints < string > & { kind : "property" ; range : Range < StringShape < string > , 1 , 1 > ; } ; title : PropertyConstraints < string > & { kind : "property" ; range : Range < DictionaryConstraints & { kind : "dictionary" } & { uniqueLang : true } , 1 , 1 , > ; } ; description : PropertyConstraints < string > & { kind : "property" ; range : Range < DictionaryConstraints & { kind : "dictionary" } & { uniqueLang : true } , undefined , 1 , > ; } ; broader : NoInfer < { forward : string ; reverse : string } > & PropertyConstraints < string , > & { kind : "property" ; range : Range < ReferenceShape < () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...
, > , undefined , 1 , > ; } ; narrower : NoInfer < { foreign : true } > & PropertyConstraints < string > & { kind : "property" ; range : Range < ReferenceShape < () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...
, > , undefined , undefined , > ; } ; upper : PropertyConstraints < string > & { kind : "property" ; range : Range < ReferenceShape < () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...
, > , undefined , 1 , > ; } ; lower : NoInfer < { foreign : true ; reverse : string } > & PropertyConstraints < string , > & { kind : "property" ; range : Range < ReferenceShape < () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...
, > , undefined , undefined , > ; } ; } , >
Hierarchical product classification with localised labels.
The
broaderlink to the parent category also writes the inversenarrowerlink, which the foreignnarrowerproperty exposes as a read-only view. Theupperlink writes no inverse, and the foreignlowerproperty reads it in the reverse direction.