interface Crumb {
title: string;
url: string;
}
interface Crumbies {
crumbsArray: Crumb[];
}
// component
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>([]);
我遇到错误:
TS2345: Argument of type 'never[]' is not assignable to parameter of type 'Crumbies | (() => Crumbies)'. Type 'never[]' is not assignable to type '() => Crumbies'. Type 'never[]' provides no match for the signature '(): Crumbies'.
如何为useState
钩中的空数组提供正确的类型?
更新1
const Breadcrumbs: React.FC<Crumbies> = ({ crumbsArray }) => {}
这就是为什么我创建了另一个接口Crumbies
来包装Crumb
的原因。有更好的方法吗?
答案 0 :(得分:11)
称为Crumbies的接口要求您传递带有crumbsArray字段的对象:
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>({crumbsArray: []});
如果只想拥有一个Crumb数组,而无需创建一个新接口,则只需在useState中完成它即可:
const [breadcrumbs, setBreadcrumbs] = useState<Crumb[]>([]);
这将使用一个空数组对其进行初始化。