5 Star 66 Fork 13

韩旭明 / grammarLearning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
09_内置类型_3、虚无的 never 类型.ts 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
韩旭明 提交于 2023-01-27 16:56 . 修改说明
/**
* 严格来说,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 {}
1
https://gitee.com/hanxuming/grammar-learning.git
git@gitee.com:hanxuming/grammar-learning.git
hanxuming
grammar-learning
grammarLearning
master

搜索帮助