gpt4 book ai didi

javascript - Typescript:根据接口(interface)键获取接口(interface)属性的类型

转载 作者:行者123 更新时间:2023-12-05 00:53:57 26 4
gpt4 key购买 nike

我正在构建一个需要一次更新对象的一个​​字段的函数。这个对象是通过接口(interface)T定义的。

interface T {
a: TypeA;
b: TypeB;
c: TypeC;
}

这应该是这个函数的类型签名:

(key: keyof T, value: typeof T[key]) => void

这会产生错误:'key' 指的是一个值,但它在这里被用作一个类型。你是说'typeof key'吗?。 IMO 我不是说 typeof key,因为 typeof key 将是 T 的任何键,但我想要 value 如果 key = a 等,则属性为 TypeA 类型。

如何选择T对应键值的类型?

最佳答案

您正在尝试使用实际值索引类型,这是不允许的。您需要使用类型( playground )访问它:

interface T {
a: number;
b: string;
c: boolean;
}

const func = <K extends keyof T>(key: K, value: T[K]) => {};

func("a", 5);
func("b", 5); // Argument of type 'number' is not assignable to parameter of type 'string'.

typescript 中的类型和实际值之间有明显的区别,因为类型信息在转译后会丢失。因此,您不能使用实际值来定义类型逻辑。唯一的方法是提取真实值的类型值(例如,使用 typeof),这就是编译器建议将真实值转换为类型的原因。

关于javascript - Typescript:根据接口(interface)键获取接口(interface)属性的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66911192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com