type-aliases.md 942 字节
Newer Older
Q
qiang 已提交
1
# 类型别名(Type Aliases)
Q
qiang 已提交
2

Q
qiang 已提交
3
使用类型别名可以为任何类型命名。类型别名不支持在局部作用域内定义。
Q
qiang 已提交
4 5 6 7 8 9

## 一般用法

使用 `type` 关键字来定义类型别名。

```ts
Q
qiang 已提交
10 11 12 13 14
type Str = string
type Fn = () => void

const str: Str = 'test'
const fn: Fn = () => {}
Q
qiang 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
```

使用类型别名不会创建类型的副本,他和原始类型保持同一份引用。

```ts
class Person {

}
type P = Person

const p: P = new Person('Tom')
```

和 TS 语言中不同的是:UTS 语言中类型别名和原始类型一样也可以作为值使用。

```ts
const p: Person = new P('Tom')
```

## 特殊处理

Q
qiang 已提交
36
当使用类型别名为对象类型(类型为对象字面量表达式)创建别名的时候,编译器会进行特殊处理编译为同名的 Class,此时也支持在局部作用域内定义。具体参考:[对象类型](./object.md)
Q
qiang 已提交
37 38 39 40

```ts
type Person = {
    name: string
Q
qiang 已提交
41
    fn: () => void
Q
qiang 已提交
42 43
}
```