Typescript: Soporte de la propiedad del constructor de la clase ES6

Creado en 21 mar. 2016  ·  3Comentarios  ·  Fuente: microsoft/TypeScript

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'.

Descripción

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?

Question

Comentario más útil

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;

Todos 3 comentarios

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:

¿Fue útil esta página
0 / 5 - 0 calificaciones