[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Object](https://evolu.dev/docs/api-reference/common/Object) › getOwnProp

```ts
function getOwnProp<K, V>(
  record: ReadonlyRecord<K, V>,
  key: NoInfer,
): V | undefined;
```

Defined in: [packages/common/src/Object.ts:403](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Object.ts#L403)

Gets an own property from a record, returning `undefined` if the key is
missing or inherited.

TypeScript's `Record<K, V>` type assumes all keys exist, but at runtime
accessing a missing key returns `undefined`. This helper provides proper
typing for that case without treating properties inherited from
`Object.prototype` as record data.

### Example

```ts

interface User {
  readonly name: string;
}

const users: Readonly<Record<string, User>> = {
  alice: { name: "Alice" },
};
const user = getOwnProp(users, "bob");

assertType<User | undefined, typeof user>();
assertEqual(user, undefined);
assertEqual(getOwnProp(users, "toString"), undefined);
```