// 你的答案
type MyReturnType<T> = T extends (...args: any[]) => infer X
? X extends Function
? X
: X extends (...args: any[]) => any
? MyReturnType<X>
: X
: never;
Solution by MrSissel #36884
type MyReturnType<T extends (...args: any) => any> = T extends (
...args: any
) => infer R ? R : never;
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<string, MyReturnType<() => string>>>,
Expect<Equal<123, MyReturnType<() => 123>>>,
Expect<Equal<ComplexObject, MyReturnType<() => ComplexObject>>>,
Expect<Equal<Promise<boolean>, MyReturnType<() => Promise<boolean>>>>,
Expect<Equal<() => 'foo', MyReturnType<() => () => 'foo'>>>,
Expect<Equal<1 | 2, MyReturnType<typeof fn>>>,
Expect<Equal<1 | 2, MyReturnType<typeof fn1>>>,
]
type ComplexObject = {
a: [12, 'foo']
bar: 'hello'
prev(): number
}
const fn = (v: boolean) => v ? 1 : 2
const fn1 = (v: boolean, w: any) => v ? 1 : 2
Solution by AnastasiaSv #36771
type MyReturnType<T> = T extends (...args: any) => infer R ? R : never
Solution by tungulin #36722
type MyReturnType<T extends Function> = T extends (...args: any) => infer R
? R
: never;
Solution by hyeongirlife #36712
// 여기 풀이를 입력하세요
type MyReturnType<T extends Function> = T extends (...args: any) => infer U ? U : never
Solution by seungdeok #36690
type MyReturnType<T> = T extends (...args: any) => infer S ? S : never
Solution by tungulin #36610
type MyReturnType<T> = T extends (...x: any[]) => infer U ? U : never
Solution by Divcutu #36586
type MyReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : never
Solution by ChemieAi #36559
type MyReturnType<T> = T extends (...i:any)=>infer R ? R : never
Solution by badri-derakhshan #36522
type MyReturnType<T extends (...args: any[]) => any> = T extends (...args: any[]) => infer R ? R : never
Solution by HadiMardanian #36516
type ReturnType<T extends Function> = T extends (arg: boolean) => infer U ? U : never
Solution by shumik323 #36470
type MyReturnType<T> = T extends (...args:any[])=>infer R ? R : never
Solution by alirezaprime #36427
type MyReturnType<T> = T extends (...args:any[])=> infer R ? R :never
Solution by alirezaprime #36424
type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
Solution by alirezaprime #36420
// your answers
type MyReturnType<T extends (...args: any[]) => any> =
T extends ((...args: any[]) => infer R) ? R : never;
Solution by justBadProgrammer #36395
type MyReturnType<T> = T extends (...args:any) => infer U ? U : never;
Solution by gakki-san #36374
type MyReturnType
Solution by asylbekduldiev #36303
type MyReturnType<T> = T extends (...arg: infer _) => infer R ? R : never
Solution by Maxim-Do #36230
type MyReturnType<T> = T extends (...args: any[]) => infer F ? F : never
Solution by AleksandrShcherbackov #36151
// type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
Solution by bnnnnnnnnnnnn #36135
type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
Solution by lidongyun120398 #36095
type MyReturnType<T extends (...args: any[]) => any> = T extends (...args: any) => infer Type ? Type : never
Solution by karazyabko #36035
// 你的答案
type MyReturnType<T extends (...args: any[]) => any> = T extends (...args: any[]) => infer R ? R : never
Solution by naruto-823 #35798
// your answers
Solution by Meganathanrbm #35753
type MyReturnType<T extends (...args: Array<any>) => any> = T extends (...args: Array<any>) => infer R ? R : never;
Solution by gangnamssal #35496
// your answers
type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
Solution by Sathiyapramod #35450
type MyReturnType<T> = T extends (...arg: any[]) => infer U ? U : never
Solution by RanungPark #35446
type MyReturnType<T> = T extends (...args: unknown[]) => infer R ? R : never
Solution by liyunguang-d #35407
type ReturnType<T extends (...args:any) =>any> = T extends (...args: any) => infer R ? R : never
Solution by TaueFenCheng #35328
type MyReturnType<func extends Function> = func extends (v: boolean) => infer R ? R : never
Solution by yujun96 #35283