Typescript函数参数不可分配给泛型

lokaqttq  于 2023-04-13  发布在  TypeScript
关注(0)|答案(1)|浏览(94)

为什么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?

TSPlayground

vlf7wbxs

vlf7wbxs1#

我必须给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

相关问题