Le Tutoriel de TypeScript Tuples
1. Qu'est-ce que c'est Tuple ?
Dans TypeScript, un Tuple est une séquence de valeurs. En règle générale, un Tuple est un tableau avec des fonctionnalités supplémentaires, voici les caractéristiques d'un Tuple :
- Tuple est déclaré avec un nombre spécifique d'éléments et spécifie le type de chaque élément.
- La valeur initiale du Tuple doit être un tableau avec le même nombre d'éléments que le nombre déclaré du Tuple.
- Après avoir déclaré un tuple et l'avoir initialisé, vous être plus libre à ajouter des éléments au Tuple ou à supprimer des éléments du Tuple.
La syntaxe :
// Declare a Tuple variable and initialize its value
let myTuple: [dataType1, dataType2, dataTypeN] = [value1, value2, valueN];
// Declare a Tuple variable
let myTuple: [dataType1, dataType2, dataTypeN];
// Initialize its value
myTuple = [value1, value2, valueN];
Par exemple : On crée un Tuple avec 3 éléments de type [string, string, number] :
tuple_ex1.ts
// string: emp number, string: name, number: salary
let myTuple1: [string, string, number] = ['E01', 'Tom', 1200 ]; // OK
let myTuple2: [string, string, number] = ['E01']; // Error !!
let myTuple3: [string, string, number] = ['E01', 'Tom', 1200, 500]; // Error !!
let myTuple4: [string, string, number] = [100, 200, 300]; // Error !!
let myTuple4: [string, string, number] = ['A', 'B', 'C']; // Error !!
En réalité, un Tuple est un objet de l'interface Array. On peut donc accéder à ses éléments par le biais d'indices.
tuple_ex2.ts
// string: emp number, string: name, number: salary
let myTuple: [string, string, number] = ['E01', 'Tom', 1200 ];
console.log(myTuple);
console.log(`Type: ${myTuple.constructor.name}`); // Array
console.log(`myTuple[0]: ${myTuple[0]}`); // E01
console.log(`myTuple[1]: ${myTuple[1]}`); // Tom
console.log(`myTuple[2]: ${myTuple[2]}`); // 1200
myTuple[1] = 'Jerry';
console.log(myTuple);
Output:
[ 'E01', 'Tom', 1200 ]
Type: Array
myTuple[0]: E01
myTuple[1]: Tom
myTuple[2]: 1200
[ 'E01', 'Jerry', 1200 ]
2. Tuple vs Array
En règle générale, un Tuple est un tableau avec des vérifications supplémentaires.
Les idées de conception de Tuple :
Array | Tuple | |
La longueur fixe | No | Yes (*) |
La longueur dynamique | Yes | No (*) |
Contenir différents types de données | No | Yes |
En fonction des idées de conception de Tuple, vous devriez l'utiliser lorsque vous avez besoin d'un tableau avec une taille fixe et un type spécifique pour chaque élément. Cependant, ce n'est qu'une règle vague. Après avoir déclaré et initialisé la valeur du Tuple, vous pouvez modifier le nombre d'éléments du Tuple si vous le souhaitez.
Par eExemple : Utiliser la méthode push() pour ajouter de nouveaux éléments à un Tuple (bien que cela soit à l'inverse des idées de conception de Tuple).
tuple_warning_ex1.ts (**)
// string: staff number, string: name, number: salary
let staff: [string, string, number] = ['E01', 'Tom', 1200 ];
console.log(staff); // [ 'E01', 'Tom', 1200 ]
let newLength = staff.push('New 1', 'New 2');
console.log('New Length: ' + newLength); // 5
console.log(staff); // [ 'E01', 'Tom', 1200, 'New 1', 'New 2' ]
// The element at index 3 and 4 cannot be accessed directly:
// console.log(staff[3]); // Compile Error !!!
// console.log(staff[4]); // Compile Error !!!
let idx3 = 3;
let idx4 = 4;
// Accessing the elements at index 3 and 4 in this way is OK:
console.log(staff[idx3]); // OK!
console.log(staff[idx4]); // OK!
// Accessing the elements at index 3 and 4 in this way is OK:
for(let idx in staff) {
console.log(`Element at ${idx} is: ${staff[idx]}`);
}
Output:
[ 'E01', 'Tom', 1200 ]
New Length: 5
[ 'E01', 'Tom', 1200, 'New 1', 'New 2' ]
New 1
New 2
Element at 0 is: E01
Element at 1 is: Tom
Element at 2 is: 1200
Element at 3 is: New 1
Element at 4 is: New 2
L'exemple ci-dessous montre que parfois, il est bénéfique de briser les idées de conception de Tuple.
tuple_arr_ex1.ts
let employeeInfo: [string, string, number, string] = [
'E01', // Emp Number
'Tom', // Emp Name
1200 , // Salary
'0901.33333' // Phone Number
];
employeeInfo.push('0901.44444'); // Second Phone Number
employeeInfo.push('0901.55555'); // Third Phone Number
console.log(employeeInfo);
Output:
[
'E01',
'Tom',
1200,
'0901.33333',
'0901.44444',
'0901.55555'
]
3. Methods
Les méthodes de tableau (et évidemment, il peut également être utilisé avec Tuples):
Array Interface
interface Array<T> {
length: number;
toString(): string;
toLocaleString(): string;
pop(): T | undefined;
push(...items: T[]): number;
concat(...items: ConcatArray<T>[]): T[];
concat(...items: (T | ConcatArray<T>)[]): T[];
join(separator?: string): string;
reverse(): T[];
shift(): T | undefined;
slice(start?: number, end?: number): T[];
sort(compareFn?: (a: T, b: T) => number): this;
splice(start: number, deleteCount?: number): T[];
splice(start: number, deleteCount: number, ...items: T[]): T[];
unshift(...items: T[]): number;
indexOf(searchElement: T, fromIndex?: number): number;
lastIndexOf(searchElement: T, fromIndex?: number): number;
every<S extends T>(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[];
every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;
some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;
forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
filter<S extends T>(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];
filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;
reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
reduceRight<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;
[n: number]: T;
}
Voir des exemples utilisant les méthodes ci-dessus dans l'article sur les tableaux :
Tutoriels de programmation TypeScript
- Exécutez votre premier exemple TypeScript en Visual Studio Code
- Espaces (Namespaces) de noms dans TypeScript
- Module dans TypeScript
- Opérateur typeof dans TypeScript
- Les Boucles en TypeScript
- Installer TypeScript sur Windows
- Fonctions dans TypeScript
- Le Tutoriel de TypeScript Tuples
- Interfaces dans TypeScript
- Tableaux dans TypeScript
- Opérateur instanceof dans TypeScript
- Méthodes dans TypeScript
- Fermetures dans TypeScript
- Constructeurs dans TypeScript
- Propriétés dans TypeScript
- Analyser JSON dans TypeScript
- Analyser JSON dans TypeScript avec la bibliothèque json2typescript
- Qu'est-ce que Transpiler?
Show More