TS泛型默认值加了之后报错, 该怎么改 ?
下面代码为什么报错
export const getOptionClasses = <T = any>(labelOption: T) => {
const leafClass = (!labelOption.children || !labelOption.children.length) ? 'leaf-option' : '';
const rootClass = (typeof labelOption.parent_id === 'undefined') ? 'root-option' : '';
};
回复
1个回答
test
2024-07-10
不加 = any
照样会报错呀
既然用到了 labelOption.children
和 labelOption.parent_id
就要做好约束呀
比如
<T extends { children: Array<any>, parent_id?: number }> // 不知道你的 children 里面是什么,但是标注清楚好一点哦
不过类型单独写比放在 <>
里清楚多了
type LabelOption = {
children: Array<any>
parent_id?: number
}
// 没看出来为什么要写泛型哦?
export const getOptionClasses = (labelOption: LabelOption) => {}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容