ts中的void和never类型及区别

yizhihongxing

下面是详细讲解“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自定义指令详细

    Vue自定义指令详细攻略 Vue提供了许多内置指令用于操作DOM元素,如v-if、v-show、v-bind等。但是,如果我们想要自定义一些不同于Vue提供的指令来操作DOM元素,该怎么做呢?这时候,Vue的自定义指令就派上用场了。 自定义指令的基本使用 Vue允许开发者自定义指令,只需要在Vue实例中的directives选项中注册即可。 自定义指令需要定…

    Vue 2023年5月27日
    00
  • Vue-cli配置打包文件本地使用的教程图解

    下面我为大家详细讲解“Vue-cli配置打包文件本地使用的教程图解”的完整攻略。 一、前置知识 在介绍如何配置Vue-cli打包文件本地使用前,我们需要先了解以下几个概念: Vue-cli:Vue-cli是Vue.js官方提供的一个脚手架工具,通过Vue-cli快速生成Vue项目目录结构和配置,并支持开箱即用的webpack构建工具。 webpack:web…

    Vue 2023年5月28日
    00
  • Vue生命周期中的八个钩子函数相机

    Vue生命周期中的八个钩子函数是Vue组件在创建、挂载、更新、销毁过程中执行的钩子函数。这些钩子函数在Vue组件中起到了重要的作用,以便开发者在这些组件生命周期的不同时期进行不同的操作。这八个钩子函数分别是: beforeCreate:在Vue实例被创建后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。 cre…

    Vue 2023年5月28日
    00
  • 浅谈Vue组件单元测试究竟测试什么

    浅谈Vue组件单元测试究竟测试什么 在进行Vue组件单元测试时,我们主要测试以下方面: 1. 组件的行为是否正确 组件的行为包括用户交互和事件响应机制。我们可以使用Jest和 vue-test-utils库对组件进行测试,以便确保它们在视觉上展现正确,并能检查它们是否正确地响应用户行为和事件。 例如,以下代码对一个简单的Vue组件进行了测试,该组件接收一个数…

    Vue 2023年5月28日
    00
  • 一篇文章总结Vue3.2语法糖使用

    一篇文章总结Vue3.2语法糖使用 简介 Vue.js是一款流行的前端JavaScript框架,而Vue 3是其最新版本,其中引入了一些方便开发的新特性,即语法糖。本篇文章将讲解Vue3.2语法糖的使用方法。 defineComponent函数 在Vue3中,我们可以使用defineComponent函数定义组件,它可以让代码更加简洁明了。下面是一个使用de…

    Vue 2023年5月27日
    00
  • Vue中如何使用mock模拟数据

    下面我会为您详细讲解在Vue中如何使用mock模拟数据的完整攻略。 1. 什么是Mock Mock(模拟数据)是指在前端开发中,由于后端接口还未开发完成,前端开发需要提前模拟数据进行开发的一种手段。mock可以在前端使用虚拟数据进行开发,便于前端更好地进行模块开发、调试、测试等。 2. 如何使用mock 2.1 安装mockjs 我们可以使用npm安装moc…

    Vue 2023年5月28日
    00
  • idea项目debug模式无法启动的解决

    针对“idea项目debug模式无法启动”的问题,我们可以尝试以下措施解决: 1. 检查项目依赖 在使用idea进行项目开发时,如果项目依赖有问题,可能会导致debug模式启动失败。这时我们可以尝试检查一下项目依赖的问题,具体步骤如下: 在idea中打开对应项目 点击菜单栏上的File -> Project Structure 在弹出的窗口中,点击左侧…

    Vue 2023年5月28日
    00
  • 深度了解vue.js中hooks的相关知识

    深度了解vue.js中hooks的相关知识 什么是hooks? Vue 3.0 采用了 Composition API,这是一种基于函数的API,包含了许多新的hooks(钩子函数),例如 setup()、onMounted()、onBeforeUnmount() 等。这些新的钩子函数不仅可以让我们更加方便地组合逻辑,还可以提高代码的可读性和可复用性。 基本…

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