S SmartDocs
Chuỗi bài: Typescript typescript 102 dòng · Cập nhật 2026-01-04

07-arrays-tuples.ts

Typescript/src/01-beginner/07-arrays-tuples.ts

// ============================================
// 07. Arrays and Tuples
// ============================================

// Array Type Syntax
let numbers: number[] = [1, 2, 3, 4, 5];
let names: string[] = ["Alice", "Bob", "Charlie"];

// Alternative syntax
let numbers2: Array<number> = [1, 2, 3, 4, 5];
let names2: Array<string> = ["Alice", "Bob", "Charlie"];

// Array Operations
let arr: number[] = [1, 2, 3];

// Adding elements
arr.push(4);
arr.unshift(0);

// Removing elements
arr.pop();
arr.shift();

// Accessing elements
let first = arr[0];
let last = arr[arr.length - 1];

// Iterating
for (let num of arr) {
  console.log(num);
}

arr.forEach(num => console.log(num));

// Array Methods with Types
let nums: number[] = [1, 2, 3, 4, 5];

// map - higher order function
let doubled: number[] = nums.map(n => n * 2);

// filter - higher order function
let evens: number[] = nums.filter(n => n % 2 === 0);

// reduce - higher order function
let sum: number = nums.reduce((acc, n) => acc + n, 0);

// find - higher order function
let found: number | undefined = nums.find(n => n > 3);

// some - higher order function
let hasEven: boolean = nums.some(n => n % 2 === 0);

// Readonly Arrays
let readonlyNumbers: readonly number[] = [1, 2, 3];
// readonlyNumbers.push(4); // Error: Property 'push' does not exist

// Or use ReadonlyArray<T>
let readonlyNumbers2: ReadonlyArray<number> = [1, 2, 3];

// Tuples - Fixed length arrays with specific types
let person: [string, number] = ["Alice", 25];
// person = [25, "Alice"]; // Error: Type 'number' is not assignable to type 'string'

let firstElement: string = person[0];  // "Alice"
let secondElement: number = person[1];  // 25

// Named Tuples (TypeScript 4.0+)
let personNamed: [name: string, age: number] = ["Alice", 25];

// Optional Tuple Elements
let optionalTuple: [string, number?] = ["Alice"];
// Second element is optional

// Rest Elements in Tuples
let tuple: [string, ...number[]] = ["Alice", 1, 2, 3, 4];
// First element is string, rest are numbers

// Readonly Tuples
let readonlyTuple: readonly [string, number] = ["Alice", 25];
// readonlyTuple[0] = "Bob"; // Error: Cannot assign to '0' because it is a read-only property

// Common Use Cases

// Coordinates
type Point = [number, number];
let point: Point = [10, 20];

// Key-Value Pairs
type KeyValue = [string, any];
let entry: KeyValue = ["name", "Alice"];

// Function Returns
function getStatus(): [boolean, string] {
  const success = true;
  const message = "Operation completed";
  return [success, message];
}

const [success, message] = getStatus();

export { numbers, arr, person, point, getStatus };

Bài viết liên quan