首页 > 解决方案 > 如何从函数参数中获取对象属性值作为类型

问题描述

这是我要实现的目标的简短示例

type Arg = {
  name: string
}

function fun(arg: Arg): // what do I return ? 
function fun (arg) {
  return {[arg.name]: true}
}

我能做些什么吗?

标签: typescript

解决方案


我认为您正在寻找这样的东西:

type Arg<T extends string> = {
    name: T
}

function fun<Name extends string, T extends Arg<Name>>(arg: T): Record<T['name'], boolean>
function fun<Name extends string, T extends Arg<Name>>(arg: T) {
    return { [arg.name]: true }
}

const result = fun({ name: 'John' }) // Record<"John", boolean>

操场

有关推断函数参数的更多信息,您可以在我的文章中找到


推荐阅读