Home > Mobile >  How to check the keys only of passing object in typescript?
How to check the keys only of passing object in typescript?

Time:10-14

I want to pass obj to selectMap with typescript support.

And I want to make sure the keys pass to the function. I don't want to check the value type.

How I can achieve this with typescript? I have try to do keyof but typescript throw error.

codesandbox.io

interface User {
  id: number;
  firstName: string;
  age: number;
}

function selectMap<T>(obj: keyof T) {}

selectMap<User>({
  id: 'id',
  firstName: 'first_name',
  age: 'age'
})

CodePudding user response:

You can use the Record<K, V> utility type to mean "an object whose keys are of type K and whose values are of type V". You want obj to be a value of a type like Record<keyof T, any> instead of just keyof T:

function selectMap<T>(obj: Record<keyof T, any>) { }

selectMap<User>({
    id: 'id',
    firstName: 'first_name',
    age: 'age'
}); // okay

Playground link to code

  • Related