Typescript: Prise en charge de la propriété du constructeur de classe ES6

Créé le 21 mars 2016  ·  3Commentaires  ·  Source: microsoft/TypeScript

Version TypeScript:

1.7.5

Code

class Foo extends React.Component<any, any> {
 // ... some class definitions
}
Foo.defaultProps = {
  bar: 'baz'
}

Comportement prévisible:

Pas d'erreur.

Comportement réel:

TS2339: La propriété 'defaultProps' n'existe pas sur le type 'typeof Foo'.

La description

Salut, je voudrais créer une classe de réaction en utilisant du typographie avec des j'ai rencontré l'erreur ci-dessus.

Ce serait génial si je pouvais définir la propriété de classe comme ci-dessus au lieu du corps de la classe. semble dactylographié ne le prend pas en charge?

Question

Commentaire le plus utile

L'erreur est que, par défaut, il n'y a pas defaultProps propriété statique Foo . Il vous suffit donc de dire au compilateur que vous souhaitez une telle propriété.

class Foo extends React.Component<any, any> {
    static defaultProps: any;
}

Foo.defaultProps = {
  bar: 'baz'
}

En général, si les accessoires étaient d'un certain type P au lieu de any , alors ce serait class Foo extends React.Component<P, ... et static defaultProps: P;

Tous les 3 commentaires

L'erreur est que, par défaut, il n'y a pas defaultProps propriété statique Foo . Il vous suffit donc de dire au compilateur que vous souhaitez une telle propriété.

class Foo extends React.Component<any, any> {
    static defaultProps: any;
}

Foo.defaultProps = {
  bar: 'baz'
}

En général, si les accessoires étaient d'un certain type P au lieu de any , alors ce serait class Foo extends React.Component<P, ... et static defaultProps: P;

Vous pouvez également utiliser la fusion de modules pour un peu moins de code:

class Foo { ... }
namespace Foo {
  export const defaultProps = {
    ...
  }
}

Merci beaucoup pour vos aimables réponses! : +1:

Cette page vous a été utile?
0 / 5 - 0 notes