Existe alguma razão para que o argumento defaultValue
não seja opcional aqui?
import * as React from 'react';
import * as firebase from 'firebase/app';
interface AuthProps {
children: any;
}
interface AuthState {
user: firebase.User | null;
}
interface AuthContextProps extends AuthState {
updateUser(user: firebase.User | null): void;
}
export const AuthContext = React.createContext<AuthContextProps>(); // <-- ERROR HERE!
// export const AuthConsumer = AuthContext.Consumer;
export const AuthProvider = (props: AuthProps) => {
const [state, setState] = React.useState<AuthState>({
user: null,
});
const updateUser = (user: firebase.User | null) => setState({ user });
return (
<AuthContext.Provider
value={{
updateUser,
user: state.user,
}}
>
{props.children}
</AuthContext.Provider>
);
};
URL do Docs: https://reactjs.org/docs/context.html#reactcreatecontext
O argumento defaultValue é usado apenas quando um componente não tem um Provedor correspondente acima dele na árvore.
Eu tenho um Provedor correspondente acima na árvore, então devo ser capaz de criar um contexto sem definir um valor padrão ou estou errado?
Estou encerrando esse problema por enquanto. Se alguém pensa que este é um problema real, fique à vontade para contribuir.
Não ter um valor padrão está impedindo meu build de execução de typescript de funcionar. Existe alguma maneira de tornar isso opcional?
Se você deseja compilar seu código sem um valor padrão, você pode iniciá-lo com null
.
export const AuthContext = React.createContext(null)
~ A solução null
não funciona mais para mim. Vou registrar um novo problema. ~
Editar: não, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 menciona o porquê. Ah bem.
Comentários muito úteis
Não ter um valor padrão está impedindo meu build de execução de typescript de funcionar. Existe alguma maneira de tornar isso opcional?