/**
* Wraps a styled component to supply default props
* @template {T} - Component type
* @template {TDefaults} - Default props
* @param {T} component - Our styled component object
* @param {TDefaults} defaultProps - The object's default props
* @returns the styled component with default props applied
*/
export function withDefault<T extends { defaultProps?: Partial<TDefaults> }, TDefaults>(component: T, defaultProps: TDefaults): T & { defaultProps: TDefaults } {
// eslint-disable-next-line no-param-reassign
component.defaultProps = defaultProps;
// Cast to any necessary as we can't infer styled component type
return component as any;
}
这将返回以下错误:
5:0 warning The type 'T' is undefined jsdoc/no-undefined-types
6:0 warning The type 'TDefaults' is undefined jsdoc/no-undefined-types
9:41 warning Missing JSDoc comment jsdoc/require-jsdoc
9:135 warning Missing JSDoc comment jsdoc/require-jsdoc
答案 0 :(得分:0)
对于JSDoc @template
,大括号{...}
中的内容是 constraint ,并且模板变量名称应放在大括号之后。因此correct syntax应该是:
/**
* Wraps a styled component to supply default props
* @template {{ defaultProps?: Partial<TDefaults> }} T - Component type
* @template {any} TDefaults - Default props
* @param {T} component - Our styled component object
* @param {TDefaults} defaultProps - The object's default props
* @returns the styled component with default props applied
*/
export function withDefault<T extends { defaultProps?: Partial<TDefaults> }, TDefaults>(component: T, defaultProps: TDefaults): T & { defaultProps: TDefaults } {
// eslint-disable-next-line no-param-reassign
component.defaultProps = defaultProps;
// Cast to any necessary as we can't infer styled component type
return component as any;
}
您还需要根据this doc将eslint选项settings.jsdoc.mode
设置为typescript
,以抑制该错误。