1 回复
首先,列个简单的 ts 代码:
interface IOptions { a: string; } function doit(options: IOptions & any) { console.log(options); } doit({}); |
上述代码中,调用 doit 方法 参数中并未指定 a 属性,函数的定义后面 用了一个 & any
从 Page 的定义来看,原始定义如下:
interface PageConstructor { <D extends IAnyObject, T extends IAnyObject & PageInstance>( options: PageInstance<D, T> & T ): void } |
如果按照楼主的写法: Page<IData, any> ,那上述代码中options 的 D = IData,T = any,与上面的例子一样的道理,
如果需要让编译器校验 data 里面的属性,则需要如下的写法:
interface IData { logs: number; } interface IPage { } Page<IData, IPage>({ data: { logs: 1 } }) |