官术网_书友最值得收藏!

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:

  1. 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.
  1. 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:

  1. 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.

主站蜘蛛池模板: 安乡县| 进贤县| 云林县| 三门峡市| 麻城市| 新化县| 洪江市| 湘阴县| 金阳县| 花垣县| 咸宁市| 原阳县| 罗山县| 衡山县| 鸡东县| 科技| 台南市| 阜康市| 九龙县| 仲巴县| 鹤庆县| 商城县| 朔州市| 盐亭县| 漳平市| 北票市| 曲靖市| 宁乡县| 高平市| 武穴市| 兰州市| 辉县市| 丰原市| 利津县| 金溪县| 合水县| 长春市| 长沙市| 武定县| 同心县| 恭城|