The keyof Type operator is a pretty straight forward to to so. It kind of like does to an interface the what Object.keys() does to an object.
In the example below, P can be either 'x' or 'y'.
type Point = { x: number; y: number };
type P = keyof Point;
The example below will throw an error because 'prop4' is not a property of MyObject. Try it here.
interface MyObject {
prop1: string;
prop2: string;
prop3?: string;
}
const myObject: MyObject = {
prop1: 'prop1Value',
prop2: 'prop2Value',
}
type K = keyof MyObject;
const someOfMyObjectKeys: K[] = ['prop1', 'prop3', 'prop4'];
If you don't want to explicitly create a type just for that, you can use parenthesis. It's going to look like this:
const someOfMyObjectKeys: (keyof MyObject)[] = ['prop1', 'prop3', 'prop4'];
That's it. I hope that helps!
Top comments (0)