枚举
使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript支持数字的和基于字符串的枚举
数字枚举
//枚举类名首字母大写
enum Week {
// 选项首字母大写
// Sunday=9, // 不写值默认重0开始
// Monday,//默认递增1
// Toesday,
// Wednesday,
// Thursday,
// Friday,
// Saturday
// 周日,不需要添加字符串,相当于声明的变量名称是:周日
周日,周一,周二=10,周三,周四,周五,周六
}
console.log(Week.周日);
字符串枚举
// enum 枚举 Sex枚举的名字
enum Sex {
boy = '男',
gril = '女'
}
function a2(sex: Sex) {
console.log(`张三的性别是:${sex}`);
}
a2(Sex.boy)
计算和常量成员
每个枚举成员都带有一个值,它可以是 常量或 计算出来的。 当满足如下条件时,枚举成员被当作是常量
- 它是枚举的第一个成员且没有初始化器,这种情况下它被赋予值
0
:
// E.X is constant:
enum E { X }
- 它不带有初始化器且它之前的枚举成员是一个 数字常量。 这种情况下,当前枚举成员的值为它上一个枚举成员的值加1。
// All enum members in 'E1' and 'E2' are constant.
enum E1 { X, Y, Z }
enum E2 {
A = 1, B, C
}
- 枚举成员使用 常量枚举表达式初始化。 常数枚举表达式是TypeScript表达式的子集,它可以在编译阶段求值。 当一个表达式满足下面条件之一时,它就是一个常量枚举表达式:
- 一个枚举表达式字面量(主要是字符串字面量或数字字面量)
- 一个对之前定义的常量枚举成员的引用(可以是在不同的枚举类型中定义的)
- 带括号的常量枚举表达式
- 一元运算符
+
,-
,~
其中之一应用在了常量枚举表达式 - 常量枚举表达式做为二元运算符
+
,-
,*
,/
,%
,<<
,>>
,>>>
,&
,|
,^
的操作对象。 若常数枚举表达式求值后为NaN
或Infinity
,则会在编译阶段报错。
异常
程序运行意外发生的情况
一.除法运算
function chu(num1: number, num2: number) {
if (num2 == 0) {
// throw 抛出异常
throw new Error('除数不能为零')
}
let num: number = num1 / num2
console.log(num);
}
程序出现于异常会停止运行
二.捕获异常
try {//尝试执行有可能有异常的代码块
chu(1, 0)
} catch (error) {//对异常进行处理 error是出现的错误
// error值是可以改的
// console.log(error);
console.log(error.message);
}
chu(1, 1)
主动去捕获异常
例:
try {
if (getNum(num3)>60) {
console.log('及格');
}else{
console.log('不及格');
}
} catch (err) {
console.log("不及格");
}
例
模拟输入一个年龄,输完年龄之后,提示输入成功
不管是不是出现异常,都需要提示输入成功
let num: string = 'a12'
// 转化
function getNum(num: string): number {
if (parseInt(num)) {
return parseInt(num)
} else {
throw new Error('年龄输入错误')
}
}
function ts() {
try {
console.log('模拟输入的值为:' + num);
let age = getNum(num)
console.log('年龄是:' + age);
} catch (error) {
} finally {
//finally 无论是否出现异常都要执行
// 异常的最终解决方案
console.log('输入成功');
}
}
ts()
先执行finally然后再执行return
异常的处理方法的总结
1.主动捕获方式 try catch finally
try {
有可能出现异常的代码
} catch (error) {
对异常的处理
}finally{
无论是否有异常都会执行的代码
}
2,抛出异常
throw new Error(‘提示词’)
3.throws 声明异常 暂时无法使用 todo
function a()throw ReferenceError{
}