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 !