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