TypeScript 类型别名(type alias)与接口(interfaces)的比较

TypeScript 是一種強型別的 JavaScript 語言,它提供了兩種定義資料型態的方式:类型别名(type alias)和接口(interfaces)。本文將比較這兩種方式的優缺點,以及它們的使用情境。

类型别名(type alias)

类型别名(type alias)可以讓我們為一個已經存在的型態定義一個新的名稱,例如:

type Name = string;

這樣就可以將 string 的型態定義為 Name,以後就可以使用 Name 來代表 string 的型態。

类型别名也可以用來定義複合型態,例如:

type Name = string;
type Age = number;

type Person = {
  name: Name;
  age: Age;
};

這樣就可以定義一個 Person 的型態,它包含了 nameage 兩個屬性,分別是 NameAge 兩種型態。

接口(interfaces)

接口(interfaces)也可以用來定義複合型態,例如:

interface Person {
  name: string;
  age: number;
}

這樣就可以定義一個 Person 的型態,它包含了 nameage 兩個屬性,分別是 stringnumber 兩種型態。

接口還可以定義函數型態,例如:

interface Person {
  name: string;
  age: number;
  greet(): void;
}

這樣就可以定義一個 Person 的型態,它包含了 nameagegreet() 三個屬性,分別是 stringnumbervoid 三種型態。

比較

类型别名(type alias)和接口(interfaces)都可以用來定義複合型態,但是接口還可以定義函數型態,所以接口比类型别名更加強大。

另外,类型别名可以用來定義一個已經存在的型態的新名稱,而接口則不能,所以类型别名比接口更加簡單。

結論

类型别名(type alias)和接口(interfaces)都可以用來定義資料型態,但是它們的使用情境不同。类型别名可以用來定義一個已經存在的型態的新名稱,而接口則可以定義複合型態和函數型態,所以接口比类型别名更加強大。

Categorized in:

Tagged in: