今天来讲解特殊型别中的 never
,never
是一种函式回传值的状况,跟 void
很像,稍後会来比较一下两者的差异。
有两种情况会派上用场:
如果今天有一个函式会有回传值,而中间我们有准备例外处理抛出来,我们就可以将这个函式回传值赋予 Never
型别,如下:
const transactionCheck = function orderStatusCheck(status: string): string | never {
if (status === 'cancel') {
errorMessage('something went wrong')
}
return 'seccess!'
}
function errorMessage(message: string): never {
throw new Error(message);
}
这边 TypeScript 很聪明的推断 errorMessage
是 never
。
另外整理 never
例子
// 有特别注记 never
function errorMessage(message: string): never {
throw new Error(message);
}
// 自动推论回传的是 never
function failed() {
return errorMessage('errorMessage')
}
// getRandomFail 函式会有结束点(number 小於 2),回报错误
function getRandomFail(x: number): never{
let number = Math.floor(Math.random() * x) + 1
if (number < 2) {
failed()
}
} //Error: A function returning 'never' cannot have a reachable end point.
void
: 函式或方法不回传值的情况。
never
: 函式没有任何结束点时,若没有注记,TypeScript 就会判断该函式回传值为 never
。如果有注记回传值为 never
,该函式就不会有结束点。
这边简单复习一下:
never
。never
时,代表这函式不会有结束点。never
服用。return
值的型别或函式回传值来进行型别推断。never
是蛮特殊的型别,也有好玩的地方,大家可以多多尝试喔~
>>: EP15 - [TDD] 建立 Order 参数 (1/2)
URI 之 URL 语法 URL 语法图: 图片来源 根据图片,我们可以知道所谓的 URL ,是由 ...
昨天介绍了一些名词,今天继续提Node.js Node.js一点入门 今天直接贴上程序码,再去做解释...
大家好!虽然今天是 Day 2,不过严格来说是系列文的第一天。今天要来谈谈「为什麽我们需要在前端做...
最近想记录一下繁体转换简体,是因为网站或是在写blog的时候,未来会加入简体版,这样内容就可以迅速转...
今天主要是来介绍一下文字嵌入(Embed)这功能 如果想要在讯息里使用mark down功能的话需要...