微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自对象值的打字稿动态接口

如何解决来自对象值的打字稿动态接口

我正在从字符串创建 args 解析器。 我有定义参数名称认值的接口

interface IargsDef {
    name: string;
    default?: string;
}

我想要的是智能感知(制作一些动态接口 idk)处理解析结果。

对于参数定义

[{
name: "test1"
},{
name: "test2",default: "test"
}]

应该是这样的

{
"test1": "some value","test2": "some value or default"
}

但是智能感知不会看到这些属性

解决方法

如果我正确理解了您要查找的内容,那么类似这样的操作可能会奏效:

interface IArgsDef<Name extends string> {
    name: Name;
    default?: string;
}

const argsDef = {
  test1: { name: "test1" },test2: { name: "test2",default: "test" }
}

type ArgsInput<Defs extends Record<string,unknown>> = Defs[keyof Defs] extends IArgsDef<infer _>
  ? Record<keyof Defs,string>
  : never

type ExpectedInput = ArgsInput<typeof argsDef>
// type ExpectedInput = {
    // test1: string;
    // test2: string;
}

我将您的 args 定义从数组的定义方式更改为对象,以便完成这项工作,但我不确定这是否可以接受。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。