> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Class: VObjectRef<I, Optional, Type, FieldPaths>

> An interface reference validator preserves its exact declared domain through optional fields, independently of the ancestors its value may satisfy.

[values](https://docs.bijection.com/api/modules/values).VObjectRef

An interface reference validator preserves its exact declared domain through
optional fields, independently of the ancestors its value may satisfy.

## Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ObjectInterface`](https://docs.bijection.com/api/modules/server#objectinterface) |
| `Optional` | extends [`OptionalProperty`](https://docs.bijection.com/api/modules/values#optionalproperty) = `"required"` |
| `Type` | [`ObjectRef`](https://docs.bijection.com/api/modules/server#objectref)\<`I`> \| `Optional` extends `"optional"` ? `undefined` : `never` |
| `FieldPaths` | extends `string` = keyof `ReferenceFields` |

## Constructors

### constructor

• **new VObjectRef**\<`I`, `Optional`, `Type`, `FieldPaths`>(`contract`,
`isOptional`)

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ObjectInterface`](https://docs.bijection.com/api/modules/server#objectinterface) |
| `Optional` | extends [`OptionalProperty`](https://docs.bijection.com/api/modules/values#optionalproperty) = `"required"` |
| `Type` | [`ObjectRef`](https://docs.bijection.com/api/modules/server#objectref)\<`I`> \| `Optional` extends `"optional"` ? `undefined` : `never` |
| `FieldPaths` | extends `string` = keyof `ReferenceFields` |

#### Parameters

| Name | Type |
| :- | :- |
| `contract` | `I` |
| `isOptional` | `Optional` |

## Properties

### kind

• `Readonly` **kind**: `"object"`

***

### isConvexValidator

• `Readonly` **isConvexValidator**: `true`

***

### type

• `Readonly` **type**: `Type`

***

### fieldPaths

• `Readonly` **fieldPaths**: `FieldPaths`

***

### \[objectReferenceContract]

• `Readonly` **\[objectReferenceContract]**: `I`

***

### interfaceName

• `Readonly` **interfaceName**: `I`\[`"name"`]

***

### fields

• `Readonly` **fields**: `ReferenceFields`

***

### isOptional

• `Readonly` **isOptional**: `Optional`

## Methods

### optional

▸ **optional**(): [`VObjectRef`](https://docs.bijection.com/api/classes/values.VObjectRef)\<`I`,
`"optional"`, `Type` | `undefined`, `FieldPaths`>

#### Returns

[`VObjectRef`](https://docs.bijection.com/api/classes/values.VObjectRef)\<`I`, `"optional"`, `Type` |
`undefined`, `FieldPaths`>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.