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生命周期的那些事

    下面是详细聊聊Vue生命周期的攻略: 什么是Vue的生命周期? Vue生命周期是指Vue实例从创建到销毁的整个过程,包括了数据的变化、用户的操作等各个阶段,其中也包含了组件的创建、挂在、更新和销毁等过程。 Vue的生命周期包含哪些钩子函数? Vue的生命周期包含了以下几个钩子函数: beforeCreate:实例创建之前的钩子函数,此时的数据和方法都不存在。…

    Vue 2023年5月28日
    00
  • Vue3父子组件传参有关sync修饰符的用法详解

    下面是详细讲解“Vue3父子组件传参有关sync修饰符的用法详解”的完整攻略。 什么是sync修饰符? 在Vue3中,我们可以使用.sync修饰符将父组件的数据属性与子组件的属性进行双向绑定。例如,我们有一个父组件和一个子组件: <!– 父组件 –> <template> <div> <h2>{{ mess…

    Vue 2023年5月28日
    00
  • Vue 2中ref属性的使用方法及注意事项

    Vue 2中的ref属性是一个非常有用的功能,可以用来在Veu实例中访问组件、元素或子组件。以下是关于Vue 2中ref属性的使用方法及注意事项的攻略。 什么是ref属性 ref是Vue提供的一个属性,可以用来在Vue实例中设置、组件或元素的标识,通过这个标识可以直接在Vue实例中访问相应的实例或元素。 ref属性的使用方法 在Vue模板中使用ref属性需要…

    Vue 2023年5月28日
    00
  • 浅谈Vue中render中的h箭头函数

    下面我将详细讲解“浅谈Vue中render中的h箭头函数”的攻略。 什么是render函数? 在Vue中,我们经常使用template模板来编写组件。但是,在某些情况下,我们可能需要使用Vue的render函数来动态地生成组件的DOM结构。 因此,Vue提供了render函数来代替template。render函数是一个函数,它接收一个h函数作为它的第一个参…

    Vue 2023年5月28日
    00
  • 详解ESLint在Vue中的使用小结

    以下是 “详解ESLint在Vue中的使用小结” 的完整攻略: 什么是 ESLint ESLint 是一个 JavaScript 代码检查工具,它用于静态分析代码中的问题,并提供一些规则来报告潜在的问题。通过检查代码中的语法错误和设计问题,可以提高代码的可读性和稳定性。 在 Vue 中使用 ESLint Vue 项目中使用 ESLint 可以有效地提高代码的…

    Vue 2023年5月27日
    00
  • 对vue.js中this.$emit的深入理解

    对于Vue.js中的this.$emit方法的深入理解,需要从Vue.js组件通信的机制以及this指向这两个方面来展开讲解。 一、Vue.js组件通信机制 在Vue.js中,组件之间的通信可以通过props和自定义事件来实现。 1. 通过props进行父子组件通信 父组件通过props向子组件传递数据,子组件可以接收到父组件传递进来的数据,并且在子组件中将…

    Vue 2023年5月28日
    00
  • vue长按事件和点击事件冲突的解决

    下面是“Vue长按事件和点击事件冲突的解决”的完整攻略。 问题描述 在Vue开发中,长按事件和点击事件通常会被一起使用。但是当同一个元素同时有长按事件和点击事件时,就会发生冲突,这可能会导致长按事件和点击事件不理想或无法正常工作。 解决方法 我们可以通过以下两种方法来解决长按事件和点击事件冲突的问题: 方案一 在触发长按事件时,事件处理程序应该立即停止点击事…

    Vue 2023年5月28日
    00
  • vue.js给动态绑定的radio列表做批量编辑的方法

    针对这个问题,我将为您提供关于Vue.js实现动态绑定radio列表批量编辑的完整攻略,以下是具体步骤: 步骤一:定义数据 首先需要定义一个数组来存储动态生成的radio列表,例如: data() { return { options: [ {id: 1, value: ‘option1’, checked: false}, {id: 2, value: ‘…

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