【发布时间】:2020-10-10 08:21:30
【问题描述】:
看看函数 args
a不是扩展类型never。但是extends判断是真的,为什么会这样?
type d = ((a: string) => void) extends ((b: never) => void) ? true : false;
let e: d = true;
【问题讨论】:
标签: typescript extends
看看函数 args
a不是扩展类型never。但是extends判断是真的,为什么会这样?
type d = ((a: string) => void) extends ((b: never) => void) ? true : false;
let e: d = true;
【问题讨论】:
标签: typescript extends
never 称为bottom type。它是一个空集。空集可以放入任何其他集(例如您的示例中的字符串)。
正如documentation 所说:
never 类型是每个类型的子类型,并且可以分配给每个类型;但是,没有任何类型是 never 的子类型或可分配给 never(除了 never 本身)。
在打字稿中never 用于一个永远不会返回的函数。
我还建议阅读 TypeScript 中的 differences between void and never。
【讨论】:
string extends never 是 false .. 所以 (a: string) => void) extends ((b: never) => void ) ,函数查询字符串从不扩展???应该是假的
never 参数的函数。因此,任何扩展它的参数都适用于 TS。