Hacker News new | ask | show | jobs
by machiaweliczny 2719 days ago
With classes you also don't have type state when using 'state = { ... }'.

I think hooks might be nice for data fetching when it comes to TS as it will super easy to get typing.

I'm still not convinced by hooks though.

1 comments

Yes you do, you have to give the type of the state in the 'extends' clause: 'class MyComponent extends React.Component<TProps, TState> { ... }'. If you omit TState, an empty object {} is assumed for state. And you have to specify the type when updating the state via .setState(), because setState() auto-patches/merges the state. So its fine to pass a Partial<TState> to setState.

With Hooks, the auto-patching goes away, so your call to setMyCustomState() always requires an argument of type TState.

There are similar issues if you use the 'static defaultProps = { ... }' on a class - you have to manually specify the type of defaultProps - often it is Partial<TProps>