Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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