Ask Your Question
2

In TypeScript, how can I use a object's value as a generic?

asked 2022-12-14 11:00:00 +0000

huitzilopochtli gravatar image

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2021-07-15 01:00:00 +0000

ladyg gravatar image

To use an object's value as a generic, you can use the keyof operator to get the name of the object key as a string literal type. You can then use this string literal type as the generic parameter.

For example, consider the following object:

const obj = {
  foo: 'hello',
  bar: 42,
};

You can use the keyof operator to get the keys of the object as a string literal union type:

type ObjKey = keyof typeof obj; // "foo" | "bar"

You can then use this ObjKey type as the generic parameter:

function getValue<T extends keyof typeof obj>(key: T): typeof obj[T] {
  return obj[key];
}

console.log(getValue('foo')); // "hello"
console.log(getValue('bar')); // 42
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss

Add Answer


Question Tools

Stats

Asked: 2022-12-14 11:00:00 +0000

Seen: 11 times

Last updated: Jul 15 '21