- Learn React with TypeScript 3
- Carl Rippon
- 256字
- 2021-06-10 19:16:32
Never
The never type represents something that would never occur and is typically used to specify unreachable areas of code. Again, this doesn't exist in JavaScript.
Time for an example:
- Type the following code into the TypeScript playground:
function foreverTask(taskName: string): never {
while (true) {
console.log(`Doing ${taskName} over and over again ...`);
}
}
The function invokes an infinite loop and never returns, and so we have given it a type annotation of never. This is different to void because void means it will return, but with no value.
In the preceding example, we used a JavaScript template literal to construct the string to log to the console. Template literals are enclosed by back-ticks ( ``) and can include a JavaScript expression in curly braces prefixed with a dollar sign ( ${expression}). Template literals are great when we need to merge static text with variables.
- Let's change the foreverTask function to break out of the loop:
function foreverTask(taskName: string): never {
while (true) {
console.log(`Doing ${taskName} over and over again ...`);
break;
}
}
The TypeScript compiler quite rightly complains:
- Let's now remove the break statement and the never type annotation. If we hover over the foreverTask function name with our mouse, we see that TypeScript has inferred the type to be void, which is not what we want in this example:
The never type is useful in places where the code never returns. However, we will probably need to explicitly define the never type annotation because the TypeScript compiler isn't smart enough yet to infer that.
推薦閱讀
- Advanced Machine Learning with Python
- Dynamics 365 Application Development
- Unity Virtual Reality Projects
- Visual Basic程序設(shè)計(jì)教程
- Learning Python Design Patterns
- C#程序設(shè)計(jì)(項(xiàng)目教學(xué)版)
- 詳解MATLAB圖形繪制技術(shù)
- Python GUI Programming Cookbook(Second Edition)
- PHP+MySQL Web應(yīng)用開發(fā)教程
- C語言編程魔法書:基于C11標(biāo)準(zhǔn)
- Python全棧開發(fā):數(shù)據(jù)分析
- jQuery基礎(chǔ)教程(第4版)
- Java EE框架開發(fā)技術(shù)與案例教程
- JavaScript重難點(diǎn)實(shí)例精講
- 新手學(xué)ASP動(dòng)態(tài)網(wǎng)頁(yè)開發(fā)