0
点赞
收藏
分享

微信扫一扫

Typescript中尾端和数组类型


尾端类型

尾端类型中不包含任何值,尾端类型也称作0类型或者空类型。​​never​​类型使用never关键字来标识。never是所有其他类型的子类型。never类型允许赋值给任何类型。需要注意的是类型约束最宽松的any类型也不能赋值给never类型。never类型可以作为函数的返回值类型,它表示该函数无法返回一个值。如果函数体中没有使用return语句,那么代码执行完会返回一个undefined值。函数返回值类型是void类型而不是never类型。只有在函数根据无法返回一个值的时候,函数的返回值类型才是never类型。函数中如果抛出异常,就会导致函数终止执行,从而不会返回任何值。​​throwError​​函数的功能是直接抛出一个异常,它永远也不会返回一个值,返回值的类型是never类型。若函数中的代码不是直接抛出异常而是间接抛出异常,那么函数的返回值类型也是never类型。

function z(): never {
throw new Error();
}

function zss(): never {
return throwError();
}

zss函数中包含一条return语句,语句中的表达式类型为never类型,所以zss函数的返回值类型也是never类型。除了抛出异常之外,还有一种情况也无法返回一个正常值。就是如果函数体中存在无线循环从而导致函数的执行永远也不会结束,那么函数的返回值类型也是never类型。​​infiniteLoop​​函数执行永远也不会结束,所以这个也无法正常返回一个值。当​​条件类型​​中常使用never类型完成一些类型运算。借助never类型可以实现从类型T中过滤类型U的功能。

数组类型

数组表示一组有序元素的集合,数组类型有简便数组类型表示法和泛型数组类型表示法。简便数组类型表示法借用数组字面量的语法,通过在数组元素类型之后添加一对方括号来定义数组类型。如果数组中元素的类型为复合类型。则需要数组元素类型上使用分组运算符。在使用简便数组类型表示法时,必须先将联合类型放在分组运算符内,然后再在后面添加一对方括号。若在类型注解里没有使用分组运算符,则表示string类型和number类型的联合类型。如果类型和实际数组不兼容,就会产生编译错误。

举报

相关推荐

0 条评论