Typescript函数参数不能赋值给泛型



为什么func1工作如预期,而func2显示错误?

type AnyObj = Record<string, any>;
type Data = { a: number; b: string };
type DataFunction = (arg: AnyObj) => any;
const func1: DataFunction = () => {};
const arg1: Data = {} as any; 
func1(arg1); // great
const func2 = (arg: { func: DataFunction }) => {};
const arg2: { func: (arg: Data) => { } } = {} as any; 
func2(arg2); // why not ok?

TS操场

我必须给func2添加一个类型参数:

type DataFunction<A extends AnyObj = AnyObj> = (arg: A) => any;
const func2 = <D extends AnyObj, >(arg: { func: DataFunction<D> }) => {};
const arg2: { func: (arg: Data) => { } } = {} as any; 
func2(arg2); // ok