Type Casting (類型轉換)
範例:在 TypeScript 中獲取 a 標籤的 href 屬性
當我們想要在事件處理函數中獲取被點擊的 <a>
標籤的 href
屬性時,通常會嘗試使用 event.target.href
來獲取。但在 TypeScript 中,由於強類型的特性,會出現以下問題:
問題
TypeScript 不確定 event.target
是什麼類型的 HTML 元素,因為事件可能發生在任何 DOM 元素上。所以直接訪問 .href
屬性會導致類型錯誤,因為 TypeScript 認為 event.target
的類型是 EventTarget
,而這個類型並沒有 href
屬性。
解決方案:Type Casting (類型轉換)
正確的做法是使用類型轉換,明確告訴 TypeScript 這個 event.target
是一個 HTMLAnchorElement
類型:
(event.target as HTMLAnchorElement).href
這樣 TypeScript 就知道我們確信此元素是一個 <a>
標籤,所以它有 href
屬性。
使用場景例子
function handleLinkClick(event: MouseEvent) {
event.preventDefault(); // 阻止默認的跳轉行為
// 使用類型轉換取得 href 值
const href = (event.target as HTMLAnchorElement).href;
console.log('Link clicked:', href);
// 可以根據 href 做更多處理...
}
Last updated