Skip to content

类型别名

类型别名用来给一个类型起个新名字,其与接口很像。那么其与接口之间的区别是什么呢?

  • type can't be re-opened to add new properties vs an interface which is always extendable

简单的例子

ts
type Name = string;

// 这里的类型是一个返回值为string的函数
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
    if (typeof n === 'string') {
        return n;
    } else {
        return n();
    }
}

// 上面的写法和这种本质一样
function getName2(n: string | (() => string)): string {
    if (typeof n === 'string') {
        return n;
    } else {
        return n();
    }
}

上例中,我们使用 type 创建类型别名。

类型别名常用于联合类型。

参考