请教一个 ts 的问题

查看 63|回复 3
作者:zbzzhh   
type withString = String
type withNumber = Number
type emptySet = withString & withNumber
此时 emptySet 的类型是 never
那请问下图为何类型 a 跟 b 是有相交的部分?我理解是 never 。

type, emptyset, withstring, withnumber

KiraMaple   
never 表示这种情况从来不会发生
你写一个函数(不标注返回值),函数里面不返回任何东西,直接抛一个异常,你会发现这个函数的类型被自动推导为 never ,意思就是这种情况不会发生,因为这个函数绝对不可能返回任何东西
在 ts 标准库里面也利用 never 做了很多类型推导之类的,多看看别人或者标准库的 ts 定义很有必要的,能快速学习 ts
codehz   
ts 的&魔法比较多,对于 object 的情况就是开这个特例的。。。不过也可以说是 ts 的 object 类型本身就比较奇特
{a: string}的含义是一个 object 有一个叫做 a 的 string 属性——也就是不管它有没有别的属性,别的属性有什么类型
因此{a: string}和{b:number}的交集,自然是增强约束——即要求同时有 a 和 b 属性,类型分别为 string 和 number ,而不管其他的属性
slmaaw   
有什么类型既是 string 又是 number 呢? never
您需要登录后才可以回帖 登录 | 立即注册

返回顶部