Reputation: 4249
I wanted to know if I it's possible to use inheritance while setting the useState type. What I mean is if have an interface like that:
interface PackageItem {
id: number,
name: string,
address: string
}
And another interface like that
interface Selectable {
selected: boolean
}
Now I want to create a state where I will have an array of selectable packages, so I tried something like this:
const [selectablePackages, setSelectablePackages] = useState<(PackageItem extends Selectable)[]>();
But I keep getting an error, which highlights the extends word, saying:
Parsing error: Unexpected token, expected ","
I'm not setting the state type correctly, how can I achieve this?
Upvotes: 0
Views: 172
Reputation: 92274
You meant to create an inline type which can be done using &
, the intersection operator
const [selectablePackages, setSelectablePackages] =
useState<(PackageItem & Selectable)[]>();
Consider using a type or interface if you need to use it in multiple places.
type SelectablePackageItem = PackageItem & Selectable
// Or interface
interface SelectablePackageItem extends PackageItem, Selectable {}
const [selectablePackages, setSelectablePackages] =
useState<SelectablePackageItem[]>();
Upvotes: 1