携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
大家好,我是吃鱼的老鼠.最近在学习ts,有些心得来分享一下
四.枚举类型
在TS中枚举通常用来定义常量,支持数字和字符串的枚举.
1. 数字枚举
enum Direction {
North,
South,
East,
West
}
console.log(Direction.North) // 0
console.log(Direction.South) // 1
console.log(Direction.East) // 2
console.log(Direction.West) // 3
枚举的成员默认为数字0开头,依次递增.
枚举也可以反向映射
console.log(Direction[0]) // "North"
console.log(Direction[1]) // "South"
也可自定义数值
enum Direction {
North = 66,
South = 68,
East = 78,
West = 99
}
console.log(Direction.North) // 66
console.log(Direction.South) // 68
console.log(Direction.East) // 78
console.log(Direction.West) // 99
antd Pro中就使用了数字枚举来定义错误类型
// 错误处理方案: 错误类型
enum ErrorShowType {
SILENT = 0,
WARN_MESSAGE = 1,
ERROR_MESSAGE = 2,
NOTIFICATION = 3,
REDIRECT = 9,
}
2. 字符串枚举
字符串枚举里,每个成员都必须用字符串字面量
// 由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化(增加可读性)
enum Direction {
North = 'North',
South = 'South',
East = 'East',
West = 'West'
}
3. 异构枚举(Heterogeneous enums)
一个枚举中同时包含数字和字符串
enum IsRaining {
No = 0,
Yes = '下雨'
}
// 一般不要这么写
五. 类型推论
在TypeScript里,有些没有明确指出类型的地方,类型推论会帮助提供类型
例如:
let str = 'happy'
变量str的类型被推断为字符串。 这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时。
最佳通用类型
当从表达式中推断类型时候,会使用这个表达式的类型来推断出一个最合适的通用类型
let myArr1 = [false, 1, null, 'haha'];
变量myArr就推断出了 string|number|boolean|null这些类型.