ts中的void和never类型及区别

 更新时间:2023年05月05日 09:23:40   作者:夏目友人喵  
void类型和never类型都是ts新增的类型,这两者的共同点是都常见用于声明函数的返回值的类型,这里我们把它们两放在一起介绍有助于大家区分,这篇文章主要介绍了ts中的void和never类型及区别,需要的朋友可以参考下

ts中的void和never类型

void

  表示没有任何类型

// 没有返回值的函数,其返回值类型为 void
function warnUser(): void {
    console.log("void");
}
// 申明为 void 类型的变量,只能赋予 undefined 和 null
let unusable: void = undefined;

可以用到void 有以下几种情况

  • 函数没写return
  • 只写了 return, 没有具体的返回值
  • return 的是 undefined
// 如果什么都不写,此时,add 函数的返回值类型为: void
const add = () => {
     //
}
// 如果return之后什么都不写,此时,add 函数的返回值类型为: void
const add = () => { 
     return 
}
const add = (): void => {
  // 此处,返回的 undefined 是 JS 中的一个值
  return undefined
}
// 这种写法是明确指定函数返回值类型为 void,与上面不指定返回值类型相同
const add = (): void => {
    // 
}

never

  表示永远不会有值的一种类型,任何类型都不能赋值给 never 类型的变量

  应用场景???(暂时没找到)

// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}
// 这个函数不能申明其返回值类型
function warnUser(): void {
    console.log("void");
}
function add (a?: number, b: number = 1) {
  // ?跟在参数名字的后面,表示可选的参数
  // 注意:可选参数只能在 必须参数的后面
  // 如果可选参数在必选参数的前面,会报错
  // 设置了默认值之后,就是可选的了,不写就会使用默认值; 可选的参数一定有值。它们不能一起使用。优先使用默认值
  console.log(111);
}

补充:void类型和never类型

void类型和never类型都是ts新增的类型,这两者的共同点是都常见用于声明函数的返回值的类型,这里我们把它们两放在一起介绍有助于大家区分。 void,表示函数返回值空,即undefined。 never类型则是表示函数没有返回值,也绝不会(never)有返回值的情况发生。

void类型

可以使用变量声明方法去声明void类型,除了underfined之外不能对void类型变量赋值(null也不行),所以平时声明一个void类型的变量没有什么大用,我们一般也只有在函数没有返回值时去声明。

function fn():void{
    return underfined
}

需要注意的是 return null 不能使用于void类型的函数,所以这里我来科普下nullunderfined的区别和联系。

null和underfined相同点: 两者都是js的基本数据类型,都表示“无,没有” 在if 或者 == 隐式类型转化中,null和underfined是相同的,都表示false

null和underfined不同点:
null表示"没有对象",即该处不应该有值。典型用法是:
(1)作为函数的参数,来表示该函数的参数不是对象
(2)作为对象原型链的终点
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2)对象没有赋值的属性,该属性的值为undefined。
(3)函数没有返回值时,默认返回undefined。
(4)调用函数时,应该提供的参数没有提供,该参数等于undefined。

never类型

never类型,也是用于函数的返回值,表示函数永远不会返回结果,js中有函数不返回结果的情况,一般不写return 就返回 undefined,但是这个never是什么都不返回。
比如js 的抛出错误异常函数,就不会返回任何结果:

function err(mag:string):never{
    throw new Error(msg);  
}

到此这篇关于ts中的void和never类型的文章就介绍到这了,更多相关ts void和never内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析微信扫码登录原理(小结)

    浅析微信扫码登录原理(小结)

    这篇文章主要介绍了浅析微信扫码登录原理(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • javascript 实现map集合

    javascript 实现map集合

    本文给大家分享的是个人项目中需要的一个小功能,当时经过一番度娘才实现,现在从项目中拿出来,分享给大家,需要的小伙伴快来参考下吧。
    2015-04-04
  • 认识Knockout及如何使用Knockout绑定上下文

    认识Knockout及如何使用Knockout绑定上下文

    Knockout简称ko,是一个轻量级的javascript类库,采用MVVM设计模式(即Model、view、viewModel),简单优雅的实现了双向绑定,实时更新,帮助您使用干净的数据模型来创建丰富的、响应式的用户界面
    2015-12-12
  • js实现分享到随页面滚动而滑动效果的方法

    js实现分享到随页面滚动而滑动效果的方法

    这篇文章主要介绍了js实现分享到随页面滚动而滑动效果的方法,实例分析了javascript操作页面元素滚动效果的方法,需要的朋友可以参考下
    2015-04-04
  • Bootstrap每天必学之栅格系统(布局)

    Bootstrap每天必学之栅格系统(布局)

    Bootstrap每天必学之栅格系统,小编对Bootstrap栅格系统(布局)也很陌生,特分享整理这篇文章,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • JavaScript 中的作用域与闭包

    JavaScript 中的作用域与闭包

    这篇文章主要介绍了JavaScript中的作用域与闭包,JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言,下文是更多相关介绍需要的小伙伴可以参考一下
    2022-05-05
  • D3.js实现绘制柱状图的教程详解

    D3.js实现绘制柱状图的教程详解

    这篇文章主要为大家详细介绍了如何通过D3.js实现绘制柱状图,文中的示例代码讲解详细,对我们学习D3.js有一定的帮助,需要的可以参考一下
    2022-11-11
  • JavaScript中数组sort()方法的基本使用与踩坑记录

    JavaScript中数组sort()方法的基本使用与踩坑记录

    : js中用方法sort()为数组排序,这篇文章主要给大家介绍了关于JavaScript中数组sort()方法的基本使用,sort()方法已经可以满足我们对数组的很多处理需求,需要的朋友可以参考下
    2021-06-06
  • js验证身份证号码记录的方法

    js验证身份证号码记录的方法

    在一些需要填写身份证的表单网页中,需要对身份证的输入做一个验证,于是,我记录下了自己写的验证。这篇文章主要介绍了js验证身份证号码记录的方法,需要的朋友可以参考下
    2019-04-04
  • JavaScript基于对象去除数组重复项的方法

    JavaScript基于对象去除数组重复项的方法

    这篇文章主要介绍了JavaScript基于对象去除数组重复项的方法,结合实例形式分析了javascript数组去重的操作步骤与具体实现技巧,需要的朋友可以参考下
    2016-10-10

最新评论