- Learn React with TypeScript 3
- Carl Rippon
- 306字
- 2021-06-10 19:16:35
Type aliases
In simple terms, a type alias creates a new name for a type. To define a type alias, we use the type keyword, followed by the alias name, followed by the type that we want to alias.
We'll explore this with the following example:
- Let's create a type alias for the getTotal method in the OrderDetail interface we have been working with. Let's try this in the TypeScript playground:
type GetTotal = (discount: number) => number;
interface OrderDetail {
product: Product;
quantity: number;
getTotal: GetTotal;
}
Nothing changes with objects that implement this interface – it is purely a way we can structure our code. It arguably makes the code a little more readable.
- Type aliases can also define the shape of an object. We could use a type alias for our Product and OrderDetail types that we previously defined with an interface:
type Product = {
name: string;
unitPrice: number;
};
type OrderDetail = {
product: Product;
quantity: number;
getTotal: (discount: number) => number;
};
- We use these types in exactly the same way as we used our interface-based types:
const table: Product = {
name: "Table",
unitPrice: 500
};
const orderDetail: OrderDetail = {
product: table,
quantity: 1,
getTotal(discount: number): number {
const priceWithoutDiscount = this.product.unitPrice * this.quantity;
const discountAmount = priceWithoutDiscount * discount;
return priceWithoutDiscount - discountAmount;
}
};
So, type aliases seem very similar to interfaces. What is the difference between a type alias and an interface? The main difference is that type aliases can't be extended or implemented from like you can with interfaces. So, for a simple structure that doesn't require inheritance, should we use an interface or should we use a type alias? There isn't strong reasoning to prefer either approach. However, we should be consistent with whichever approach we choose to improve the readability of our code.
- JavaScript 從入門到項目實踐(超值版)
- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- Hands-On Image Processing with Python
- CentOS 7 Linux Server Cookbook(Second Edition)
- FreeSWITCH 1.6 Cookbook
- Learning SQLite for iOS
- Java 11 Cookbook
- Nginx Lua開發實戰
- 軟件品質之完美管理:實戰經典
- Visual Basic程序設計教程
- 一塊面包板玩轉Arduino編程
- Go語言編程
- Learning AWS
- 深入理解C指針
- Solutions Architect's Handbook