type TestFunction<T> = () => T;
type TestResult<T> = {
[K in keyof T]: T[K] extends TestFunction<infer R> ? R : T[K];
};
function test<T extends Record<string, string | TestFunction<R>>, R>(p: T): TestResult<T> {
return {} as TestResult<T>;
}
const t = test({a: "111", b:() => 11})
t.a; // string
t.b; // number
[ts] 利用infer实现根据传入的动态类型判断输出类型
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 基础语法[https://www.jianshu.com/p/79efe9cb25ca] 手写promise[ht...