API композиции vue 3 и ключи объекта машинописного текста

В настоящее время копаюсь в api композиции Vue-3 и задаюсь вопросом, как подробно использовать типы (используя TypeScript поверх vue).

документация по поводу это, поскольку есть только краткое описание того, как создавать строки. Конечно, в соответствии с этим я мог бы просто использовать тип Object, но мне интересно, как объявить свойства объекта, чтобы сообщить TypeScript, какие ключи принадлежат связанному объекту - в api стиля класса это можно было бы сделать способом TypeScript ... есть ли какие-либо расширенные источник о том, как делать свойства в деталях в API композиции?


person Irgend Son Hansel    schedule 24.11.2020    source источник
comment
Возможно, предоставьте небольшой фрагмент кода, демонстрирующий, чего вы пытаетесь достичь. Пример часто может лучше проиллюстрировать проблему, чем длинное описание.   -  person Husam Ibrahim    schedule 24.11.2020
comment
В API стиля класса я бы сделал это так: @Prop () somePropertyName: {foo, bar}; Итак, TypeScript / моя IDE знает, что мой объект должен содержать ключи foo и bar. Я не мог найти описания о том, как добиться этого с помощью композиции api   -  person Irgend Son Hansel    schedule 24.11.2020
comment
хорошо, вам нужно использовать PropType. Я приведу вам пример ниже.   -  person Husam Ibrahim    schedule 24.11.2020
comment
@IrgendSonHansel Кто-то недавно задал аналогичный вопрос. Предлагаемое мной решение может помочь.   -  person Yom T.    schedule 24.11.2020


Ответы (1)


Используйте PropType, чтобы предоставить строгие определения типов для ваших свойств. Вот пример ..

import { defineComponent, PropType } from 'vue';

export default defineComponent({
  props: {
    myProp: Object as PropType<{ foo: string, bar: number }>,
  },
  setup(props) {
    ...
  }
});
person Husam Ibrahim    schedule 24.11.2020
comment
Вы можете сказать, где можно найти эту информацию? Теперь я знаю, как обращаться с объектами, но как насчет массивов и функций ...? - person Irgend Son Hansel; 24.11.2020
comment
@IrgendSonHansel То же самое. См. Аннотирование свойств в официальном руководстве. - person Husam Ibrahim; 24.11.2020