generics - React-redux-hooks med TypeScript
Jag använder react-redux-hooken useSelector med TypeScript. Finns det något stöd för statisk typning? Nu måste jag göra en typomvandling med as-nyckelordet.
interface User { age: number }
const selectUser = (state): User => state.user.detail
const MyComponent = () => {
const user1 = useSelector(selectUser)
user1.age = 'This is not number.' // No warning or error.
const user2 = useSelector<User>(selectUser)
user2.age = 'This is not number.' // No warning or error.
const user3 = useSelector(selectUser) as User
user3.age = 'This is not number.' // TS2339 error, but with casting.
}
Svar #1
useSelector har två typparametrar <TState, TSelected>, den andra parametern är typen av det valda värdet. Så detta fungerar:
const user = useSelector<TState, User>(selectUser)
