[TypeScript] Use TypeScript’s never Type for Exhaustiveness Checking

本文深入探讨了TypeScript 2.0引入的never类型,解释了其在函数完成行为建模和穷尽检查中的作用。通过示例展示了如何使用assertNever函数确保枚举中的所有情况都被处理,有效避免了代码中遗漏的处理情形。

TypeScript 2.0 introduced a new primitive type called never, the type of values that never occur. It helps model the completion behavior of functions more accurately and can also be used for exhaustiveness checking.

 

never type means that 'That part of code cannot be reached'.

 

In somecases, never type can be useful as well.

const enum ShirtSize {
  XS,
  S,
  M,
  L,
  XL
}

function assertNever(value: never): never {
  // throw Error(`Unexpected value '${value}'`)
  // Adjusted for plunker output
  console.log(Error(`Unexpected value '${value}'`));
}

function prettyPrint(size: ShirtSize) {
  switch (size) {
      case ShirtSize.S: console.log("small");
      case ShirtSize.M: return "medium";
      case ShirtSize.L: return "large";
      case ShirtSize.XL: return "extra large";
      // [ts] Argument of type 'ShirtSize.XS' is
      // not assignable to parameter of type 'never'.
      default: return assertNever(size);
  }
}

prettyPrint(ShirtSize.S)
prettyPrint(ShirtSize.XXL)

In the example, we want to make sure that every time in the enum ShirtSzie has been handled by the 'prettyPrint' function.

But sometime, we might miss one case. That's where 'assertNever' function can help to make sure, we have gone though all the cases.

转载于:https://www.cnblogs.com/Answer1215/p/7811540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值