---
# System prepended metadata

title: "\U0001F3C5 Day 4 - 陣列與物件"
tags: [TypeScript 直播班-2025]

---

# 🏅 Day 4 - 陣列與物件

## TypeScript 物件


以下為使用物件的型別註釋寫法：

```tsx=
const person: {
  name: string;
  age: number;
  greet: () => void;
} = {
  name: "John",
  age: 30,
  greet: () => {
    console.log(`Hello, my name is ${person.name}. I'm ${person.age} years old.`);
  },
};
```

上面的程式碼中，我們建立了一個名為 `person` 的物件，它有 `name`、`age` 和 `greet` 三個屬性。

在 `person` 物件中定義了一個 `greet` 方法，通過後面使用點（`.`）運算子，來呼叫這個方法。用於打招呼並輸出名字和年齡。



## TypeScript 陣列

TypeScript 支援兩種宣告陣列的方式：

1. **使用方括號（[]）**
    
   例如 **`number[]`** 表示數字型別的陣列。
    
2. **使用泛型陣列型別（Array<元素型別>）**
    
    泛型提供一種方式來確保陣列中的所有元素都是同一種型別。例如，**`Array<number>`** 也表示數字型別的陣列。

### **範例程式碼**

**範例 1：數字型別陣列**

```tsx=
let numbers: number[] = [1, 2, 3, 4, 5];
console.log(numbers.length); // 輸出：5
```

**範例 2：字串型別的泛型陣列**

```tsx=
let fruits: Array<string> = ["蘋果", "香蕉", "櫻桃"];
fruits.push("西瓜");
console.log(fruits); // 輸出：["蘋果", "香蕉", "櫻桃", "西瓜"]
```

### **單選題**

1. **在 TypeScript 中，以下哪個是正確宣告數字陣列的方式？**
    - A. **`let numbers = [1, 2, 3];`**
    - B. **`let numbers: number[] = [1, 2, 3];`**
    - C. **`let numbers: Array = [1, 2, 3];`**
    - D. **`let numbers: [number] = [1, 2, 3];`**
2. **以下哪種方法可以用來向 TypeScript 陣列中添加新元素？**
    - A. **`append()`**
    - B. **`push()`**
    - C. **`add()`**
    - D. **`insert()`**
3. **如何宣告一個包含字串和數字的 TypeScript 陣列？**
    - A. **`let values: [string, number] = ["Hello", 5];`**
    - B. **`let values: (string | number)[] = ["Hello", 5];`**
    - C. **`let values: Array<string, number> = ["Hello", 5];`**
    - D. **`let values: string & number[] = ["Hello", 5];`**
4. **在 TypeScript 中，`pop()` 方法的用途是什麼？**
    - A. 刪除陣列的第一個元素。
    - B. 刪除陣列的最後一個元素。
    - C. 在陣列的開頭添加一個元素。
    - D. 在陣列的末尾添加一個元素。
5. **以下哪個是 TypeScript 中宣告多維陣列的正確方式？**
    - A. **`let matrix: number[][] = [[1, 2], [3, 4]];`**
    - B. **`let matrix: Array<number> = [[1, 2], [3, 4]];`**
    - C. **`let matrix: number[] = [[1, 2], [3, 4]];`**
    - D. **`let matrix: [number, number][] = [[1, 2], [3, 4]];`**

### **實作題**

1. 寫一個 `calculateSum` 函式，該函式接受一個數字陣列作為參數並回傳它們的總和。
2. 定義一個 `TUser` 型別，為一個由物件組成的陣列，物件中的屬性包含：`id` 為數字型別、`name` 為字串型別、`address` 為可選屬性，內容是字串型別或 `null`。創建一個 `user` 陣列帶入任意資料以符合該型別定義。
3. 寫一個 `mergeArrays` 函式， 來合併兩個相同型別的字串陣列，並回傳一個包含兩個陣列所有元素的新陣列。


<!-- 解答：  


單選題：B、B、B、B、A

實作題：
1.
function calculateSum(numbers: number[]): number {
    return numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
}

2.
type TUser = {
    id: number;
    name: string;
    address?: string | null | undefined;
}[]
const user: TUser = [
{
    id: 1,
    name: "Tim",
    address: "XX Rd. XX Street."
},
{
    id: 2,
    name: "Linda",
    address: null
},
{
    id: 3,
    name: "Rick",
},
]

3.
function mergeArrays(array1: string[], array2: string[]): string[] {
    return [...array1, ...array2];
}
-->