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.2k
1 个回答

不加 = 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) => {}
logo
Microsoft
子站问答
访问
宣传栏