ts学习第三天补充

85 阅读1分钟

枚举

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 不存在的状态或者达不到预期的状态