Búsqueda de sitios web

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;