代码拉取完成,页面将自动刷新
/**
* 严格来说,never 类型不携带任何的类型信息
* 只有 never 类型的变量能够赋值给另一个 never 类型变量
* 在联合类型中会被直接移除
*
*/
//在联合类型中会被直接移除
let UnionWithNever : "hanxuming" | 599 | true | void | never;
/**
* void 和 never:
*
* void 作为类型表示一个空类型,就像没有返回值的函数使用 void 来作为返回值类型标注一样,
* void 类型就像 JavaScript 中的 null 一样代表“这里有类型,但是个空类型”。
*
* never 是一个“什么都没有”的类型,它甚至不包括空的类型
*/
//void 和 never 的类型兼容性
declare let v1: never;
declare let v2: void;
v1 = v2; // X 类型 void 不能赋值给类型 never
v2 = v1;
/**
* never使用场景,比如一个只负责抛出错误的函数:
* */
function justThrow(): never {
throw new Error()
}
/**
* 在类型流的分析中,一旦一个返回值类型为 never 的函数被调用,
* 那么下方的代码都会被视为无效的代码(即无法执行到)
* */
function justThrowA(): never {
throw new Error()
}
function foo(input: number) {
if (input > 1) {
justThrowA();
// 等同于 return 语句后的代码,即 Dead Code
const name = "hanxuming";
}
}
//export {}:解决“无法重新声明块范围变量”错误提示问题
export {}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。