TypeScript带有Array.map
类型的开箱即用类型,但这依赖于所提供的函数最终将在运行时执行。
我正在寻找一种声明select
函数的方法,该函数将提供类型检查,同时还允许在运行时评估select
中的字段。我的目标是编写OData客户端库,但是我在解决select方法上遇到了困难。
例如(T是在包含接口上定义的泛型):
interface EndPoint<T>{
select<K extends keyof T>(fields: K[]):[ /* ??? */];
}
我想这样调用该方法:
let resource: EndPoint<{id: number, name: string, email: string}> = ...;
resource.select(['id', 'name']);
让Typescript理解返回类型如下:
[{id: number, name: string}]
我知道Partial<>
类型,但是我希望键入比“所有字段可能存在或不存在”更智能。