P粉8232680062023-08-16 16:02:42
When indexing an object, you need to use the keyof
operator.
From the TypeScript documentation:
interface types { '0': JSX.Element; '1': JSX.Element; '2': JSX.Element; } export default function Economy(props: any) { const [step, setStep] = useState<keyof types>("0") const render = () => { const component: types = { '0': <Home />, '1': <Create />, '2': <Detail />, } return component[step] } return ( {render()} )
P粉0088297912023-08-16 14:40:17
Your step
has type number
and cannot be used to index types
because types
only has 1,2, 3
. So you can manually set step
to keyof types
:
const [step, setStep] = useState<keyof types>(0)
Since step
is a number, you also need the key:
interface types { 0: JSX.Element; 1: JSX.Element; 2: JSX.Element; } const component: types = { 0: <Home />, 1: <Create />, 2: <Detail />, } return component[step] // 没有错误