packages/plain-object/docs/api/functions/assertPlainObject.md
[**@httpx/plain-object v1.1.1**](../README.md) • **Docs**
***
[@httpx/plain-object v1.1.1](../README.md) / assertPlainObject
# Function: assertPlainObject()
> **assertPlainObject**\<`TValue`\>(`v`, `msgOrErrorFactory`?): `asserts v is TValue extends DefaultBasePlainObject ? BasePlainObject : PlainObject<TValue>`
Assert a value is a plain object
## Type Parameters
• **TValue** *extends* `BasePlainObject` = `DefaultBasePlainObject`
## Parameters
• **v**: `unknown`
• **msgOrErrorFactory?**: `MsgOrErrorFactory`
## Returns
`asserts v is TValue extends DefaultBasePlainObject ? BasePlainObject : PlainObject<TValue>`
## Example
```typescript
import { assertPlainObject } from '@httpx/plain-object';
import type { PlainObject } from '@httpx/plain-object';
function fn(value: unknown) {
// 👇 Throws `new TypeError('Not a plain object')` if not a plain object
assertPlainObject(value);
// 👇 Throws `new TypeError('Custom message')` if not a plain object
assertPlainObject(value, 'Custom message');
// 👇 Throws custom error if not a plain object
assertPlainObject(value, () => {
throw new HttpBadRequest('Custom message');
});
return value;
}
try {
const value = fn({ key: 'value' });
// ✅ Value is known to be PlainObject<unknown>
assertType<PlainObject>(value);
} catch (error) {
console.error(error);
}
```
## Throws
TypeError