[英]Infer type of value of corresponding key
Let's consider the following generic:让我们考虑以下泛型:
type KV<T, K extends keyof T> = {
key: K; // any key of T
value: T[K]; // corresponding value type of the key
}
KV<MyType, "myKey">
represents a {key: "myKey", value: ...}
object based on MyType. KV<MyType, "myKey">
代表一个基于 MyType 的{key: "myKey", value: ...}
object。
We can use it like this:我们可以这样使用它:
// random type
type MyType = {
a: number;
b: string;
}
// below, how could we infer K from the 'key: "a"' instead of setting it manually?
const kv : KV<MyType, "a"> = {
key: "a",
value: 47
}
kv
is a valid object, but we have to specify the key twice. kv
是有效的 object,但我们必须指定密钥两次。 How could we update KV to infer the key automatically?我们如何更新 KV 以自动推断密钥?
Thanks in advance!提前致谢!
Playground: https://www.typescriptlang.org/play?ssl=16&ssc=2&pln=1&pc=1#code/C4TwDgpgBA0gagHgCoBpZQgD2BAdgEwGcoBrCEAewDMokA+KAXigG8AoKU8gLlgG4oAekFQAhrhBdJ1WhygA3UQBsArhF5IA2jAC6A4VADGFAE4mIhMBQIBLXAHMFytVFCQoM4AAtoZEGwBfNjYDE3F8CgBbV3AINjdoAFkQJFimVjlRXlwVSIAjCBM+OTzeQmATO3tioJCRAqUKAHc0L2ajChUlfCgm6DsqQvQqEyjXHygAcj9eACJRWcmoO3KIUR6ZQghgYCrl4ChI8RVlJRAAfjZjXHLSeSheeARk1Mg0edmGZnZOGagPlByRSqdRQAAsAHZAkA Playground: https://www.typescriptlang.org/play?ssl=16&ssc=2&pln=1&pc=1#code/C4TwDgpgBA0gagHgCoBpZQgD2BAdgEwGcoBrCEAewDMokA+KAXigG8AoKU8gLlgG4oAekFQAhrhBdJ1WhygA3UQBsArhF5IA2jAC6A4VADGFAE4mIhMBQIBLXAHMFytVFCQoM4AAtoZEGwBfNjYDE3F8CgBbV3AINjdoAFkQJFimVjlRXlwVSIAjCBM+OTzeQmATO3tioJCRAqUKAHc0L2ajChUlfCgm6DsqQvQqEyjXHygAcj9eACJRWcmoO3KIUR6ZQghgYCrl4ChI8RVlJRAAfjZjXHLSeSheeARk1Mg0edmGZnZOGagPlByRSqdRQAAsAHZAkA
Can you try你能试一下吗
type KV<T> = {
[K in keyof T]: {
key: K; // any key of T
value: T[K]; // corresponding value type of the key
}
}[keyof T]
And use it like并像使用它一样
const kv: KV<MyType> = {
key: "a",
value: 47
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.