Question sur les contraintes en Typescript

Bonjour,

J’ai une question pour les experts de Typescript : dans le cadre de ma tentative de conception d’un logiciel d’aide à l’animation d’un Ğeconomicus, je me suis fabriqué une classe qui gère l’internationalisation en Typescript. Dans cette classe, j’ai des méthodes du style :

export function t<O extends Messages & { [P in K]: (arg1: P1) => string }, K extends keyof O, P1>(i18n: I18n<O>, name: K, p1: P1): string

Cette méthode permet d’imposer à l’objet de type O (utilisé dans I18n<O>) de posséder la clé name (type K) qui contient une fonction possédant au moins un paramètre du même type que p1 (type P1) et renvoie un string.

Mon problème, c’est que I18n<O> est en fait ma classe de gestion de l’internationalisation, et que j’aimerai que cette méthode t soit une méthode de cette classe. En clair, au lieu de faire, comme actuellement :

t(i18n, 'key', 12)

j’aimerai faire :

i18n.t('key', 12)

ce qui serait plus propre. Mais pour cela, j’ai besoin d’inverser la contrainte, c’est-à-dire que plutôt que de contraindre O par rapport à K et P1, j’aimerai contraindre K et P1 par rapport à O (avec les même contraintes, bien entendu). Est-ce que cela vous semble faisable ? Si oui, comment ?

Merci !

Héhé… J’ai séché tout le monde sur ce coup-là ! :grinning:

Stackoverflow me semble plus adapté pour le coup :slight_smile:

1 Like

Tu peux t’amuser à faire des tests sur ce repl http://www.typescriptlang.org/play/

1 Like

Tu avais raison, @Inso. D’ailleurs, ça a marché :

Je pense que le fil de discussion peut être clos.

1 Like