枚举
1.数字枚举
enum Color{
red,
green,
blue
}
// 会自动封装成对象
// console.log(Color.red)会输出0
2.增长枚举
enum Color{
red = 1,
green,
blue
}
console.log(Color.green) // 会输出2
3.字符串枚举
enum Color{
red = 'red',
green = 'green',
blue = 'blue'
}
console.log(Color.blue) // 输出blue
4.异构枚举
enum Color{
yes = 1,
no = 'no'
}
console.log(Color.no)
5.接口和枚举混合使用
enum Color{
yes = 1,
no = 'no'
}
interface A{
red:Color.yes
}
let obj:A = {
red:Color.yes
}
6.反向映射
enum Types{
success = 456
}
let success:number = Types.success
let key = Types[success]
console.log(success, key)
// 输出456和success
类型推论 let str = 'c' ts会将str推断为string let str str = 123 str = 'c' ts会将str推断为any
类型别名 type s = string | number let str:s = 'xm' 给string类型设定了个别名叫s,并且支持联合类型
type和interface区别 interface可以使用extends继承,type无法继承,可以使用交叉类型实现类似功能 type s = number[] & B
type可以轻松使用联合类型
type s = number[] | string
interface A {
name:string | number
}
interface就显得不那么方便
高级用法
type num = 1 extends number ? 1 : 0 // 结果为1
type num = 1 extends string ? 1 : 0 //结果为0
// 左边的值会作为右边类型的子集
never 不存在的状态或者达不到预期的状态