Typescript内置类型中的Exclude实现原理？
#### lib.es5.d.ts
```
/**
 * Exclude from T those types that are assignable to U
 */
type Exclude<T, U> = T extends U ? never : T;
```
#### 问题
```
type AB = 'a' | 'b'
type BC = 'b' | 'c'
type Demo = Exclude<AB, BC> // => type Demo = 'a'
```
从结果上看，`T extends U`判断了 truthy 和 falsy，同时进行逻辑运算并把结果赋值给T，`extends`的这个功能官网有介绍吗？
`T extends U ? never : T` 表示如果 `T`是 `U`的子类返回`never`类型，如果不是返回`T`类型。
当`T`为联合类型的时候，它会自动分发条件。
TS 一些工具泛型的使用及其实现