Open mileOfSunshine opened 1 year ago
类型别名用来给一个类型起个新名字。使用 type 关键字来定义类型别名。
type Size<T> = { width: T, height: T };
let obj: Size
- 使用类型别名时可以在**属性**中引用自己
```ts
type Child<T> = {
rank: T,
child?: Child<T>
}
let obj: Child<number> = {
rank: 1,
child: {
rank: 2,
child: {
rank: 3
}
}
}
type Direction = 'left' | 'right' | 'top' | 'bottom';
let dir: Direction = 'left';
使用场景:
区分:
相同点:允许扩展
// interface extends interface
interface Name {
name: string;
}
interface User extends Name {
age: number;
}
// type extends type
type Name {
name: string;
}
type User = Name & { age: number }
// interface extends type
type Name {
name: string;
}
interface User extends Name {
age: number;
}
// type extends interface
interface Name {
name: string;
}
type User = Name & { age: number }
接口
接口定义一批类所需要遵守的规则。接口中不能有方法体,只需要有方法定义。
接口的定义不要理解为是在定义一个对象,而是要理解为
{}
括号包裹的代码块,里面是一条条声明语句,只不过声明的不是变量的值而是类型。声明用冒号指定类型,每条声明之前可换行、分号、逗号分隔。接口声明由关键字interface开头,后面紧跟着接口名,接口名一般以大写字母开头。
接口支持的属性有: