作者回复: type和interface 多数情况下有相同的功能,就是定义类型。但有一些小区别: type:不是创建新的类型,只是为一个给定的类型起一个名字。type还可以进行联合、交叉等操作,引用起来更简洁。 interface:创建新的类型,接口之间还可以继承、声明合并。
作者回复: 我再解释一下:简单讲,ReturnType 接受一个函数类型,并返回这个函数的返回值类型。这里关键在于 (infer R),返回值类型 R 此时是不能确定的,只有在函数执行之后才知道,是一种延迟推断,所以用 infer 修饰。特殊情况,比如 type T1 = ReturnType<any>,T1 的类型是 any。
作者回复: 它表示一个数组类型,数组元素是类型T的公共属性名的字面量联合类型
作者回复: T5是string类型,strictNullChecks关闭,就可以被赋值undefined,和NonNullable没关系,你的问题是什么?