title: ts 学习 lang: zh display: home description: ts 学习 image: https://picsum.photos/536/354?random&date=2021-04-12 date: 2019-09-21 tags:

  • ts categories:
  • 技术

# 1. ts 的好处,解决的痛点

  1. 对数据类型进行了扩充 number、boolean、string、数组,元组,枚举,null,Undefind、any,never,void,object
  2. 类型校验,要求开发确定变量的类型,更加规范
  3. 增强代码的可维护性
  4. IDE 支持,类型检测,语法提示,修改名字的时候一并修改

# 2. TS 里的基础类型

number string boolean null Undefined array object Symbol BigInt 元组 枚举 viod any never unknown

  • 元组: 已知数量和类型的数组。当你确定一系列属性的类型和顺序时可以用,代替对象,不用再去用对象申明 key 了,方便一点

    let x: [string, number]
    
    x = ['hello', 10]
    
  • 枚举: 可以说枚举是专们用来记录枚举值的特殊对象类型,编译成 js 之后就是对象。区别:

    1. 枚举内默认值为数字,且可以递增。但也可以是其他类型
    2. 枚举内数字类型可以反向映射
    3. 枚举内属性值是只读的,不可修改
enum Direction {
  Up = 1,
  Down = 2,
  Left = 3,
  Right = 4
}
let playerDirection: Direction = Direction.Right;
console.log(playerDirection);  // 输出: 3
switch (playerDirection) {
  case Direction.Up:
    console.log("向上移动");
    break;
  case Direction.Down:
    console.log("向下移动");
    break;
  default:
    console.log("未知方向");
}

# 接口中某些特殊写法

interface SquareConfig {
  color?: string //可选
  readonly x: number //只读
  [propName: string]: any //额外
}

# type 和 interface

  1. type 为类型别名。可以声明各种类型,包括基本类型、对象类型、联合类型、元组和交集。
  2. interface 为接口,只能声明对象类型
  3. type 可以涵盖 interface 的功能,除了类型合并(interface 重复声明同名类型会自动合并,type 则不能重复声明)
MD语法示例

MD语法示例

The post intro uses the `