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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Express框架Router Route Layer对象使用示例详解

    Express框架Router Route Layer对象使用示例详解

    这篇文章主要为大家介绍了Express框架Router Route Layer对象使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 微信小程序实现获取自己所处位置的经纬度坐标功能示例

    微信小程序实现获取自己所处位置的经纬度坐标功能示例

    这篇文章主要介绍了微信小程序实现获取自己所处位置的经纬度坐标功能,涉及微信小程序地图功能获取经纬度信息的相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • javascript 原型继承介绍

    javascript 原型继承介绍

    最近接触了一下html5,当然,接触过html5的人都知道,html5也不过是提供一些新的标签而已,至于整下实现的核心,还是在javascript这里。
    2011-08-08
  • javascript倒计时效果实现

    javascript倒计时效果实现

    这篇文章为大家分享了javascript倒计时效果实现代码段,现今团购网、电商网、门户网等,常使用时间记录重要的时刻,如时间显示、倒计时差、限时抢购等,特别是双十一活动,需要的朋友可以参考下
    2015-11-11
  • p5.js实现故宫橘猫赏秋图动画

    p5.js实现故宫橘猫赏秋图动画

    这篇文章主要为大家详细介绍了p5.js实现故宫橘猫赏秋图动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • js+div实现图片滚动效果代码

    js+div实现图片滚动效果代码

    本篇文章主要是对js+div实现图片滚动效果的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • JavaScript调用ajax获取文本文件内容实现代码

    JavaScript调用ajax获取文本文件内容实现代码

    这篇文章主要介绍了JavaScript调用ajax获取文本文件内容的方法,需要的朋友可以参考下
    2014-03-03
  • BOOTSTRAP时间控件显示在模态框下面的bug修复

    BOOTSTRAP时间控件显示在模态框下面的bug修复

    这篇文章主要介绍了BOOTSTRAP时间控件显示在模态框下面的bug修复,需要的朋友可以参考下
    2015-02-02
  • 再谈javascript常见错误及解决方法

    再谈javascript常见错误及解决方法

    下面小编就为大家带来一篇再谈javascript常见错误及解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • layui+jquery支持IE8的表格分页方法

    layui+jquery支持IE8的表格分页方法

    今天小编就为大家分享一篇layui+jquery支持IE8的表格分页方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09

最新评论