Back to Blog

【TypeScript】 Day7 閱讀和實作「型別別名」和「字串字面量型別」。

型別別名

type 另取一個型別的代稱。

type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
    if (typeof n === 'string') {
        return n;
    } else {
        return n();
    }
}

字串字面量型別

字串字面量 (String Literal) 型別用來約束取值只能是某幾個字串中的一個。

type EventNames = 'click' | 'scroll' | 'mousemove';
function handleEvent(ele: Element, event: EventNames) {
    // do something
}

handleEvent(document.getElementById('hello'), 'scroll');  // 沒問題
handleEvent(document.getElementById('world'), 'dbclick'); // 報錯,event 不能為 'dbclick'

// index.ts(7,47): error TS2345: Argument of type '"dbclick"' is not assignable to parameter of type 'EventNames'.

型別別名與字串字面量型別都是使用 type 進行定義。

Back to Blog
Copyright © 2026 WenYing. All rights reserved.