我正在尝试为JSDoc一个带有钩子的简单React Typescript组件。不幸的是,我似乎找不到找到使JSDoc与声明的解构数组一起工作的方法。有some answers与解构对象参数有关,但是这些不适用于数组。
/**
* @property {boolean} 0 - documentation for isLoading
* @property {func} 1 - documentation for setIsLoading
*/
const [isLoading, setIsLoading] = React.useState<boolean>(false);
更新1 :仍然难以找到记录这种变形的方法。在极端情况下,如果我自定义键入对象,它将起作用:
export type AuthFormInput = {
/** Value of the Email input field */
email: string;
/** Value of the Password input field */
password: string;
};
const [form, setForm] = React.useState<AuthFormInput>({
email: '',
password: ''
});
...
// JSDoc will work here
const email = form.email;
答案 0 :(得分:4)
这会有所帮助:
/**
* @typedef {Boolean} LoadingState — documentation for isLoading
* @description Additional doc
*/
/**
* @typedef {Function} LoadingStateSetter — documentation for setIsLoading
*/
/**
* @type {[LoadingState, LoadingStateSetter]} Loading
*/
const [isLoading, setIsLoading] = React.useState();
在此示例中,我们声明了两个附加类型:LoadingState
和LoadingStateSetter
。然后为它们添加一些描述,最后为Loading
React.useState()
类型
您还可以像这样更简单地声明它:
/**
* @type {[Boolean, Function]} Loading
*/
const [isLoading, setIsLoading] = React.useState();
但是在这种情况下,我没有找到添加说明的方法。
我已经检查了VSCode中这种文档方式的描述
答案 1 :(得分:4)
你可以试试这个:
/** @type {boolean} */
const initialState = false
const [isLoading, setIsLoading] = React.useState(initialState)