WebDev2030
@WebDev2030
Битриксоид до мозга и костей

Как описать дерево разделов во vue с typescript?

Всем привет. Как во vue в props описать дерево разделов. id раздела это число, но не как у классического массива, по порядку, а может быть любым (ID из базы).

Для начала я описал сам раздел section.ts:
export default interface Section {
  id: number,
  children: Map<number, Section> //набор из самих секций. Не уверен, что правильно.
}


Далее в компоненте SectionsSelectTree пытаюсь описать props, но не пойму как это сделать:
<template>
  <template v-for="section in sections">
    <option :value="section.id">
      <template v-for="i in depth">-</template>{{ section.name }}
    </option>
    <SectionsSelectTree v-if="section.children" :sections="section.children" :depth="depth+1"/>
  </template>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import type Section from "@/modules/Personal/types/Section";
import { type PropType } from "vue";

export default defineComponent({
  name: "SectionsSelectTree",
  props: {
    sections: {
      type: Object as Section[] // уверен что это не верно, но как не знаю. Map<number, Section> - выдаёт проходит, но выдаёт ошибку: Property 'children' does not exist on type '[number, Section]'. Причём выдаёт уже я так понимаю при вызове  SectionsSelectTree из него, т.е. SectionsSelectTree.
    },
    depth: {
      type: Number,
      default: 0
    }
  },
  mounted() {
   
  }
});
</script>

<style scoped>

</style>

Подскажите как описать набор элементов типа
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
wapster92
@wapster92
Array as PropType<Section[]>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы