type MyReturnType<T> = T extends (...args:any) => infer R ? R : T;
Solution by BangTtagGum #37307
type MyReturnType<T extends (...args: any[]) => any>
= T extends (...args: any) => infer R
? R
: never;
(...args: any[])
一定要写,或者 (...args: never[])
Solution by djdidi #37141
type MyReturnType<T extends (...args: any) => any > = T extends (...args: any) => infer R ? R : never
Solution by lumirelle #37100
type MyReturnType<T extends Function> = T extends (...args: any[]) => infer R ? R : never
Solution by 359Steve #37024
type MyReturnType<T> = T extends (...args:any[])=>infer R?R:never;
Solution by shujaat-work #36981
// 你的答案
type MyReturnType<T extends (...args: any[])=>any> = T extends (...args: any[])=> infer R ? R : never
Solution by HappyCoder211 #36975
// your answers
type MyReturnType<T extends (v: boolean, w: any) => any> = T extends (v: boolean, w: any) => infer R ? R : never;
Solution by AlexBraunMagic #36909
// 你的答案
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