Bonjour,

comment déclarer un type TReF pour définir des références de cases pour le plateau d'échecs ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
// point de départ: colonnes et rangées 
type TFile = 'a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'
type TRank = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'
Pour pouvoir calculer les mouvements il faut 4 constantes tableau, ce qui permet d'afficher le plateau suivant les directions cardinales (NORTH, EAST, SOUTH et WEST):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
type TDims = TFile | TRank
 
const DIRECTED_FILES: TDim[] = 'abcdefgh'.split('')
const DIRECTED_RANKS: TDim[] = '12345678'.split('')
const REVERSED_FILES: TDim[] = 'hgfedcba'.split('')
const REVERSED_RANKS: TDim[] = '87654321'.split('')
Et maintenant comment définir TReF pour que:

* TRef soit une chaîne de 2 caractères exactement
* TRef[0] apprteinne à l'ensemble TFile, de 'a' à 'h'
* TRef[1] apprteinne à l'ensemble TRank, de '1' à '8'

J'ai essayé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
// générique
export type TRef <file extends TFile, rank extends TRank> = `${file}${rank}`
Le problème, c'est que chaque déclaration de variable de type TRFe requiert d'instancier correctement le générique à chaque fois.

Faudrait il plutôt passer par une fonction (Guard) pour valider les refs à chaque fois qu'on en a besoin, et lever une exception au runtime au lieu du compile time ?

Merci pour vos réponses !