typescript - Extraer una interfaz/tipo de una función tipada
Si tengo una función tipada que estoy importando llamada foo es decir.
const foo(opts: {name:string, vers?:number, init:(...args)=>void }) => []
¿Hay una manera de extraer el tipo de opts de esta función en su propio tipo/interfaz?
es decir
interface IFooOpts = <TYPE OF foo(OPTS)>
?
Respuesta #1
Puedes usar un tipo condicional y el comportamiento de inferencia de los tipos condicionales para extraer el tipo del primer argumento en un alias de tipo:
declare function foo(opts: {name:string, vers?:number, init:(...args)=>void }) : []
type IFooOpts = typeof foo extends (opts: infer U) => any ? U : never;
