javascript - Chyba TypeScript pri zavádzaní abstraktnej triedy alebo vlastností?
Mám KATALÓG_DOKUMENTÁCIE, ktorý je definovaný takto:
export const DOCUMENTATION_CATALOG: {[key:string]:TopicCategory[]} = {}
Môžeme získať pole TopicCategory takto;
const values:TopicCategory[] =
Object.keys(DOCUMENTATION_CATALOG).map(
key => DOCUMENTATION_CATALOG[key])
Keď rozšírim TopicCategory pomocou AbstractTopic, získam nasledujúcu chybu pre premennú values:
const values: TopicCategory[] Typ 'TopicCategory[][]' nie je priraditeľný k typu 'TopicCategory[]'. Typ 'TopicCategory[]' nemá žiadne spoločné vlastnosti s typom 'TopicCategory'.
Toto je Stackblitz
Izoloval som to trochu ďalej. Chyba sa nevyskytne, ak vo TopicCategory nie sú žiadne vlastnosti.
Odpoveď č. 1
Váš DOCUMENTATION_CATALOG je mapa z string na TopicCategory[].
Vaša values je typu TopicCategory[], ale spätná funkcia odovzdaná do map() vracia jednu z hodnôt v DOCUMENTATION_CATALOG, teda TopicCategory[]. Preto je výsledok volania map() pole TopicCategory[], teda TopicCategory[][].
Nemôžem dať žiadne návrhy, pretože si nie som istý, aké je zamýšľané použitie value, alebo či DOCUMENTATION_CATALOG nemá nesprávny typ.
Existujú dve rôzne riešenia:
Buď musí byť value typu TopicCategory[][],
alebo DOCUMENTATION_CATALOG musí byť {[key:string]:TopicCategory}.