---
title: 普通类型
date: 2024-10-05T14:55:58Z
tags: []
---

### 类型注解

* 原始类型

  ```typescript
  const <name>:<type> = <value>
  ```

  |类型名|
  | :---------: |
  |number|
  |string|
  |boolean|
  |null|
  |undefined|
  |symbol|

* 数组类型

  ```typescript
  const <name>:<type>[] = [<value1>,<value2>]
  ```

  ```typescript
  const <name>:Array<<type>> = [<value1>,<value2>]
  ```

  元组

  > 确切的知道包含多少个元素,对应什么类型
  >

  ```typescript
  const <name>:[<type>,<type>] = [<value1>,<value2>]
  ```

* 联合类型

  可以由多个类型的组合

  ```typescript
  const <name>:(<type1> | <type2>) = <value>
  ```

* 类型别名

  自定义类型，为他取别名

  ```typescript
  type <typeName> = (<type1> | <type2>)[]
  let <name>:<typeName> = []
  ```

* 函数

  ```typescript
  function <functionName>(<name>:<type>):<type>{}
  ```

  提前指定函数整个类型

  ```typescript
  const <functionName>:(<name1>:<type1>,<number2>:<type2>) => <return type> = (<name1>,<name2>)=> {return}
  ```

  可选参数

  ```typescript
  function <functionName>(<name>?:<type>):<type>{}
  ```

* 对象

  如果多行可以不用写分号

  ```typescript
  const <name>:{<name1>:<type1>;<name2>:<type2>}={}
  ```

* 接口

  ```typescript
  interface <name>{
    <name>:<type>
  }
  ```

  继承

  ```typescript
  interface <interface1> {<name1>:<type>}
  interface <interface2> extends <interface1> {<name2>:<type>}
  ```

* 类型断言

  > as后面是一个更加具体的类型
  >
  > 通过console.dir()打印中的原型可以看到元素的具体属性
  >

  ```typescript
  const <name> = <value> as <type>
  ```

  ```typescript
  const <name> = <<type>><value>
  ```

* 字面量类型

  一个明确的值就是字面量类型

  使用模式配合联合类型使用表示一组明确的值
* 枚举

  枚举成员的值默认从0开始自增加

  定义一组命名常量

  ```typescript
  enum <name> {<name1>,<name2>}
  ```

  访问枚举成员

  ```typescript
  <enumName>.<name>
  ```

* any类型

  当值为any类型时,可以对该值进行任意操作,且没有代码提示

  具有any类型的情况

  1. 声明变量不提供类型也不提供默认值
  2. 函数参数不加类型

### 类型推论

某些没有明确指出类型的地方,TS的类型推断机制会帮助提供类型

1. 声明变量初始化时
2. 决定返回值时

### 获取类型上下文

```typescript
typeof <name>
```

1. 可以出现在函数注解的后面

‍
