在 TypeScript 中,當我們使用陣列時,必須確保每個陣列中的元素符合我們所定義的型別。例如,如果我們定義一個只接受 string
的陣列,那麼嘗試將 number
加入這個陣列就會導致錯誤。以下是一個例子,我們將嘗試往一個 string[]
型別的陣列中加入一個 number
,看看會發生什麼。
// Type of deliveryAddresses is string[]
let deliveryAddresses: string[] = [
'421 Smashing Hill, 90210',
'221b Paw-ker Street',
'4347 Whiskers-ia Lane',
]
deliveryAddresses.push(2000);
let deliveryAddresses: string[] = [
'421 Smashing Hill, 90210',
'221b Paw-ker Street',
'4347 Whiskers-ia Lane',
]deliveryAddresses.push(
2000
);
在這個例子中,錯誤發生在 deliveryAddresses.push(2000)
這行,因為 deliveryAddresses
被明確地定義為 string[]
,即只接受字串的陣列。而 push
方法試圖將 2000
這個數字插入陣列,但數字型別與字串型別不相容,因此會觸發編譯錯誤。
Argument of type 'number' is not assignable to parameter of type 'string'.
錯誤訊息的意思是:push
方法的參數必須是一個 string
,但我們提供了一個 number
。TypeScript 的型別檢查會在編譯時期攔截這類型別不一致的情況,防止程式在執行期間發生意外錯誤。
deliveryAddresses
是一個 string[]
。push
的參數:將 deliveryAddresses.push(2000)
修改為 deliveryAddresses.push('2000')
,這樣可以避免型別衝突。// Type of deliveryAddresses is string[]
let deliveryAddresses: string[] = [
'421 Smashing Hill, 90210',
'221b Paw-ker Street',
'4347 Whiskers-ia Lane',
]
deliveryAddresses.push(2000); // errors
deliveryAddresses.push('2000'); // OK
演練網址:
TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript
string[]
型別的陣列中插入 number
時,TypeScript 會提示錯誤,防止不正確的資料操作。number
轉換為 string
,使其符合陣列的型別要求。