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

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.

主站蜘蛛池模板: 石家庄市| 云林县| 庆元县| 吴忠市| 阿克苏市| 龙陵县| 石首市| 汉川市| 青浦区| 顺义区| 吉木乃县| 无棣县| 枣强县| 德庆县| 屯昌县| 铁岭市| 错那县| 鄂州市| 任丘市| 南溪县| 萨嘎县| 珠海市| 南京市| 通城县| 沾益县| 余干县| 共和县| 邢台市| 虹口区| 长宁县| 康乐县| 榆林市| 水城县| 聂荣县| 台东市| 南阳市| 万全县| 临洮县| 广德县| 东乡| 衡阳市|