TS泛型默认值加了之后报错, 该怎么改 ?

作者站长头像
站长
· 阅读数 5

下面代码为什么报错

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个回答
avatar
test
2024-07-10

不加 = any 照样会报错呀

既然用到了 labelOption.childrenlabelOption.parent_id 就要做好约束呀

比如

<T extends { children: Array<any>, parent_id?: number }> // 不知道你的 children 里面是什么,但是标注清楚好一点哦

不过类型单独写比放在 <> 里清楚多了

type LabelOption = {
    children: Array<any>
    parent_id?: number
}

// 没看出来为什么要写泛型哦?
export const getOptionClasses = (labelOption: LabelOption) => {}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容