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 的好处,解决的痛点
- 对数据类型进行了扩充 number、boolean、string、数组,元组,枚举,null,Undefind、any,never,void,object
- 类型校验,要求开发确定变量的类型,更加规范
- 增强代码的可维护性
- 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 之后就是对象。区别:
- 枚举内默认值为数字,且可以递增。但也可以是其他类型
- 枚举内数字类型可以反向映射
- 枚举内属性值是只读的,不可修改
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
- type 为类型别名。可以声明各种类型,包括基本类型、对象类型、联合类型、元组和交集。
- interface 为接口,只能声明对象类型
- type 可以涵盖 interface 的功能,除了类型合并(interface 重复声明同名类型会自动合并,type 则不能重复声明)