type withString = String type withNumber = Number type emptySet = withString & withNumber 此时 emptySet 的类型是 never 那请问下图为何类型 a 跟 b 是有相交的部分?我理解是 never 。 type, emptyset, withstring, withnumber
never 表示这种情况从来不会发生 你写一个函数(不标注返回值),函数里面不返回任何东西,直接抛一个异常,你会发现这个函数的类型被自动推导为 never ,意思就是这种情况不会发生,因为这个函数绝对不可能返回任何东西 在 ts 标准库里面也利用 never 做了很多类型推导之类的,多看看别人或者标准库的 ts 定义很有必要的,能快速学习 ts
ts 的&魔法比较多,对于 object 的情况就是开这个特例的。。。不过也可以说是 ts 的 object 类型本身就比较奇特 {a: string}的含义是一个 object 有一个叫做 a 的 string 属性——也就是不管它有没有别的属性,别的属性有什么类型 因此{a: string}和{b:number}的交集,自然是增强约束——即要求同时有 a 和 b 属性,类型分别为 string 和 number ,而不管其他的属性