泛型约束
用extends进行泛型约束
interface IWithLength {length: number}function echoWithArr<T extends IWithLength>(arg: T): T {console.log(arg.length) // 将来传入的参数中,不一定有length。于是需要 extends 进行约束:传入的之中,必须有 length 属性return arg;}
条件类型关键字
type NonType<T> = T extends null | undefined ? never : T
这里T extends null | undefined的意思是假设T 是null或者undefined,NonType的值就是nerver,否则就是T
