Versión de TypeScript:
1.7.5
Código
class Foo extends React.Component<any, any> {
// ... some class definitions
}
Foo.defaultProps = {
bar: 'baz'
}
Comportamiento esperado:
No hay error.
Comportamiento real:
TS2339: La propiedad 'defaultProps' no existe en el tipo 'typeof Foo'.
Hola, me gustaría crear una clase de reacción usando mecanografiado con clases de ES6 y encontré el error anterior.
Sería increíble si pudiera establecer la propiedad de clase como la anterior en lugar del cuerpo de la clase. parece mecanografiado no lo admite?
El error es que, de forma predeterminada, no hay propiedad estática defaultProps
en Foo
. Así que solo tiene que decirle al compilador que desea tal propiedad.
class Foo extends React.Component<any, any> {
static defaultProps: any;
}
Foo.defaultProps = {
bar: 'baz'
}
En general, si los accesorios fueran de algún tipo P
lugar de any
, entonces serían class Foo extends React.Component<P, ...
y static defaultProps: P;
También puede usar la combinación de módulos para obtener un poco menos de código:
class Foo { ... }
namespace Foo {
export const defaultProps = {
...
}
}
¡Muchas gracias por las amables respuestas! : +1:
Comentario más útil
El error es que, de forma predeterminada, no hay propiedad estática
defaultProps
enFoo
. Así que solo tiene que decirle al compilador que desea tal propiedad.En general, si los accesorios fueran de algún tipo
P
lugar deany
, entonces seríanclass Foo extends React.Component<P, ...
ystatic defaultProps: P;