Typescript: Por que o Tipo Utilitário Partial não funciona em Tipos de Acesso Indexado
Ao usar Partial em tipo de acesso indexado, ele não define as propriedades como opcionais:
por exemplo
class Klass {
prop = {
a: true,
b: 42,
};
func() {
let val: Partial<typeof this["prop"]>;
val = {a: false}; // error: Type '{ a: false; }' is not assignable to type 'Partial<this["prop"]>'.
val = {a: false, b: 13}; // ok
}
}
(veja no playground do TypeScript)
meu caso de uso é algo como:
class Base {
setState(s: Partial<typeof this["state"]>){}
}
class Subclass extends Base {
state = {
a: true,
b: 42,
};
func() {
this.setState({a: false});
}
}
por que isso não está funcionando e como posso fazer funcionar?
Resposta #1
Você pode usar o nome da classe e acessar prop sem usar isto:
let val: Partial<Klass["prop"]>
Parque infantil
