void 和 never类型
/
/ void 和 never 类型
// 一般来说,这两种类型都是用来形容函数的返回值
// ------ void ---------
function fn1(): void {
// return 123;
// return null;
// 这些都要报错,只有 return undefined; 或者 return ; 或者 直接不写 return 不会报错
// return undefined;
return ;
}
// -------never---------
function fn2(): never {
// 对于 类型是 never 的函数,里面写了 return 就会报错
throw new Error("报错了!!")
// 返回值为 never 的函数,一般我们作为报错的捕获
}
// 总结:
// void 表示返回值为 空,所以可以 return 一个 undefined 一个 空格,或者不写return
// never 的话,就必须不能写 return ,一般用于报错提示
array,tuple, enum, type 类型
// array 和 tuple(元组)
// array 和前两个同样很像。都是包含了很多参数,所以需要定义一类参数
// ---------- array ----------
let arr1: string[];
// let arr1: Array<string> // 这样是等价的
arr1 = ['lmj', 'gy', 'ldjj', 'kl'];
// 这样定义的数组,内部只允许出现一种类型
let arr2: (string | number) [];
arr2 = [1, 2, 'aa', 'bb'];
// 这样就可以定义两个类型的数组了
let arr3: any[]
arr3 = ['asd', 123, true]
// 这样就可以定义一个随意元素的数组
// -------- tuple ---------- (元组: 有固定长度的数组)
let tup1: [number, string]
tup1 = [123, 'lmj']
// ------- enum ---------- 枚举
enum Gender {
Male = 1,
Female = 0
}
let person: {
name: string,
gender: number
}
person = {
name: 'swk',
gender: Gender.Male
}
console.log("这是person: ", person)
// ------- type --------
// 类型的别名,当我有一个很长的时候,可以使用type来保存
type myType = 1 | 2 | 3 | 4 | 5;
let a: myType;
let b: myType;
a = 3;
b = 5;
// 这样可以满足,某几个变量,都满足一个约束
// 总结:
// array 数组,定义需要 确定其元素的类型,并且可以是多种类型
// tuple 元组, 定义为可数个数的有限数组, 每个元素的类型都是单独定义
// enum 枚举, 可以将 明显的标识,在内存中 以简单的数字来存储
// type 类型, 可以定义一个 类型,给常用的元素都给定该类型