Интерфейсы документов с использованием TypeDoc - PullRequest
0 голосов
/ 22 апреля 2020

Я использую TypeDo c для документирования моего кода TypeScript так:

/**
 * @param timestampValue Date in timestamp format
 */
const getDaysInTimestamp = (timestampValue: number): number => {
  return Math.round(timestampValue / 1000)
}

Проблема в том, что я использую такие функциональные компоненты React:

interface Props {
  useLocalStorage?: boolean
  useCookies?: boolean
}

const Application: React.FunctionComponent<Props> = (props) => {
  return (
    <>
      ...
    </>
  )
}

Так что вы можете использовать его следующим образом:

<Application useLocalStorage useCookies >
  ...
</Application>

Но с этой структурой я не могу подробно описать props из Application. Лучшее, что я могу сделать, это:

/**
 * @param props Props from Application component
 */
const Application: React.FunctionComponent<Props> = (props) => {
  ...

Я пытался использовать этот тип записи, но он не поддерживается:

/**
 * @param props.useLocalStorage Enable the component to store some data in the localStorage
 * @param props.useCookies Enable the component to store and read cookies
 */
const Application: React.FunctionComponent<Props> = (props) => {
  ...

Так что мой последний шанс - напрямую документировать интерфейс. Мой вопрос: есть ли способ написать TypeDo c для каждого атрибута интерфейса? Может быть, что-то похожее на это:

/**
 * @param useLocalStorage Enable the component to store some data in the localStorage
 * @param useCookies Enable the component to store and read cookies
 */
interface Props {
  useLocalStorage?: boolean
  useCookies?: boolean
}

Вы хоть представляете, как это можно реализовать?

1 Ответ

1 голос
/ 25 апреля 2020

Вы можете добавить аннотации типов к интерфейсам, аналогично тому, как это делается для классов.

interface Props {
  /** Enable the component to store some data in the localStorage */
  useLocalStorage?: boolean

  /** Enable the component to store and read cookies */
  useCookies?: boolean
}

Опция @typeparam также доступна для описания типов c generi, однако я я не уверен, что он поддерживает синтаксис Props.useLocalStorage.

/**
 * @typeParam T  Comment for type `T`.
 * You may also use the template tag.
 * @template T comment for type `T`.
 */
function doSomething<T>(target: T, text: string): number;
...