从类型化函数中提取接口/类型

时间:2018-09-12 10:56:44

标签: typescript typescript2.0

如果我要导入的键入函数称为foo,即

const foo(opts: {name:string, vers?:number, init:(...args)=>void }) => []

是否可以从此函数中将opts的类型提取到其自己的类型/接口中?

interface IFooOpts = <TYPE OF foo(OPTS)>  

1 个答案:

答案 0 :(得分:2)

您可以使用conditional typeinference behavior of conditional types来提取类型别名中第一个参数的类型:

declare function foo(opts: {name:string, vers?:number, init:(...args)=>void }) : []

type IFooOpts = typeof foo extends (opts: infer U) => any ? U : never;