ts中的void和never类型及区别

下面是详细讲解“ts中的void和never类型及区别”的完整攻略。

Void类型

Void类型表示函数没有返回值(或值为undefined)。在TS中,定义函数时可以显式指定函数的返回类型为void,例如以下代码:

function sayHello(): void {
  console.log("Hello!");
}

上述代码中,定义了一个名为 sayHello 的函数,并将其返回类型指定为 void。这意味着函数 sayHello 没有返回值,其执行完毕后,不会有任何东西被返回。

在TS中,指定void类型的变量只能赋值为 undefinednull,这是因为它们是唯一的拥有值的“子项”。

以下示例展示如何定义void类型变量并将其赋值为 undefinednull

let voidVal: void = undefined;
let voidVal2: void = null;

Never类型

Never类型表示永远不会出现的值的类型。在TS中,Never类型用于处理异常或处理程序中的无限循环等无法正常结束的情况。如果一个函数抛出异常或者进入无限循环,该函数的返回类型就应该是 never。以下是示例代码:

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

function endlessLoop(): never {
  while(true) {
    // do something
  }
}

上述代码中,throwError函数在抛出异常后不会返回任何值,因为它本应该在异常抛出后停止执行并返回值,但是抛出异常后并不会完成这些操作。这就是为什么它的返回类型是 never

同样地,endlessLoop函数会无限循环,它永远不会返回任何值,因为函数无限执行。也就是说,该函数的返回类型仍然应该是 never

Void与Never类型区别

尽管voidnever都表示返回值不存在,但它们之间还是存在许多细微差别:

  • 当函数没有返回值时,应该使用void类型,而不是never类型。
  • never类型用于表示函数可能抛出异常或发生错误等无法正常结束运行的情况。
  • void类型,定义函数的返回值为空,但不代表该函数不能正常返回运行。
  • void类型可以被赋值为undefinednull,而never类型不能赋值给任何类型。

以上是“ts中的void和never类型及区别”的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ts中的void和never类型及区别 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue学习笔记之指令v-text && v-html && v-bind详解

    针对“vue学习笔记之指令v-text && v-html && v-bind详解”,我来给你详细讲解一下。 一、v-text指令 1.1 v-text定义 v-text指令用于在Vue模板中更新元素的文本内容。它会替换元素的textContent,但是不会解析其中的HTML标签。 1.2 v-text使用示例 下面是一个简单…

    Vue 2023年5月27日
    00
  • Vue写一个简单的倒计时按钮功能

    下面是Vue写一个简单的倒计时按钮功能的完整攻略。 步骤一:创建Vue实例 首先,在HTML文件中引入Vue.js库,并在JS文件中创建一个Vue实例。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue…

    Vue 2023年5月29日
    00
  • vue3中的伸缩菜单组件

    下面我将详细讲解“Vue3中的伸缩菜单组件”的完整攻略。 一、概述 伸缩菜单组件是一个常用的组件,它可以让用户在界面上添加一些操作面板,具体实现方式就是点击按钮后,菜单面板会出现或者隐藏。在Vue3中,我们可以使用自定义指令实现这种效果。 二、实现步骤 以下是实现伸缩菜单的具体步骤: 1. 创建Vue3应用 我们需要先创建一个Vue3应用,方法如下: vue…

    Vue 2023年5月28日
    00
  • vue中如何下载文件导出保存到本地

    关于“Vue中如何下载文件导出保存到本地”的完整攻略,以下是步骤解释和代码示例: 步骤解释: 创建一个下载链接 我们可以通过创建一个 <a> 标签来实现文件下载,设置它的 href 属性指向要下载的文件路径,然后通过设置 download 属性来强制浏览器下载该文件。 通过axios请求服务器数据 使用 axios 可以轻松地向后端发送请求。比如…

    Vue 2023年5月27日
    00
  • vue.js中关于点击事件方法的使用(click)

    关于 Vue.js 中 click 事件的使用方法,可以通过以下几个步骤来进行实现: 步骤一:在 Vue 组件中定义 click 事件方法 在 Vue 组件中,可以通过定义 methods 属性来添加事件处理方法,其中可以包含一系列的方法,包括 Vue 中的 click 事件: <template> <div> <button …

    Vue 2023年5月28日
    00
  • node实现socket链接与GPRS进行通信的方法

    要实现Node.js实现与GPRS进行通信的方法,需要考虑以下步骤: Node.js服务端:首先需要在Node.js服务端建立socket通信,用于接受来自GPRS设备的请求。可以使用Node.js的net模块来创建TCP连接。 数据格式:GPRS和Socket通信时,需要协商好数据的格式,因为Socket只支持字符串和Buffer两种数据类型。因此在通信前…

    Vue 2023年5月28日
    00
  • 在vue中通过axios异步使用echarts的方法

    一、背景介绍 在Vue中通过Axios异步使用Echarts,是一种比较常见的使用场景。Axios是一个基于Promise的HTTP库,可用于浏览器和Node.js。Echarts是一个基于JavaScript的数据可视化图表库。Vue是一种流行的JavaScript框架。在Vue中使用Axios异步获取数据,再通过Echarts进行图表展示,可以实现数据可…

    Vue 2023年5月28日
    00
  • 详解vue2.0 资源文件assets和static的区别

    来讲解一下“详解vue2.0 资源文件assets和static的区别”。 什么是资源文件 在前端开发中,想要像引用图片、字体、json数据等资源文件,需要将这些文件放入到项目中的某个目录下,然后才能够在代码中进行使用。 assets和static的区别 在Vue2.0中,我们可以把资源文件放置在两个目录下:assets和static。它们之间的区别在于: …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部