# Class: ExtensionField

## ProtoBuf .Reflect .Message. ExtensionField

#### new ExtensionField(buildernon-null, messagenon-null, rule, type, name, id, optionsopt, non-null)

Constructs a new Message ExtensionField.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`builder` | ProtoBuf.Builder |  | Builder reference
`message` | ProtoBuf.Reflect.Message |  | Message reference
`rule` | string |  | Rule, one of requried, optional, repeated
`type` | string |  | Data type, e.g. int32
`name` | string |  | Field name
`id` | number |  | Unique field id
`options` | Object.<string, *> | <optional> | Options

Source:
  - protobuf.js, line 3774

### Extends

- ProtoBuf.Reflect.Message.Field

### Members

#### (non-null) builder :ProtoBuf.Builder

Builder reference.

##### Type:

- ProtoBuf.Builder

Inherited From:
  - ProtoBuf.Reflect.T#builder
Source:
  - protobuf.js, line 1417

#### className :string

Fully qualified class name

##### Type:

- string

Inherited From:
  - ProtoBuf.Reflect.T#className
Source:
  - protobuf.js, line 1438

#### defaultValue :*

Default value.

##### Type:

- *

Inherited From:
  - ProtoBuf.Reflect.Message.Field#defaultValue
Source:
  - protobuf.js, line 3384

#### element :ProtoBuf.Element

Element implementation. Created in build() after types are resolved.

##### Type:

- ProtoBuf.Element

Inherited From:
  - ProtoBuf.Reflect.Message.Field#element
Source:
  - protobuf.js, line 3412

#### (non-null) extension :ProtoBuf.Reflect.Extension

Extension reference.

##### Type:

- ProtoBuf.Reflect.Extension

Source:
  - protobuf.js, line 3782

#### id :number

Unique message field id.

##### Type:

- number

Inherited From:
  - ProtoBuf.Reflect.Message.Field#id
Source:
  - protobuf.js, line 3369

#### keyElement :ProtoBuf.Element

Key element implementation, for map fields. Created in build() after types are resolved.

##### Type:

- ProtoBuf.Element

Inherited From:
  - ProtoBuf.Reflect.Message.Field#keyElement
Source:
  - protobuf.js, line 3420

#### keyType :string|Object|null

Message field key type. Type reference string if unresolved, protobuf type if resolved. Valid only if this.map === true, null otherwise.

##### Type:

- string | Object | null

Inherited From:
  - ProtoBuf.Reflect.Message.Field#keyType
Source:
  - protobuf.js, line 3347

#### map :boolean

Message field map flag.

##### Type:

- boolean

Inherited From:
  - ProtoBuf.Reflect.Message.Field#map
Source:
  - protobuf.js, line 3339

#### name :string

Object name in namespace.

##### Type:

- string

Inherited From:
  - ProtoBuf.Reflect.T#name
Source:
  - protobuf.js, line 1431

#### (nullable) oneof :ProtoBuf.Reflect.Message.OneOf

Enclosing OneOf.

##### Type:

- ProtoBuf.Reflect.Message.OneOf

Inherited From:
  - ProtoBuf.Reflect.Message.Field#oneof
Source:
  - protobuf.js, line 3391

#### (non-null) options :Object.<string, *>

Message field options.

##### Type:

- Object.<string, *>

Inherited From:
  - ProtoBuf.Reflect.Message.Field#options
Source:
  - protobuf.js, line 3377

#### originalName :string

Original field name.

##### Type:

- string

Inherited From:
  - ProtoBuf.Reflect.Message.Field#originalName
Source:
  - protobuf.js, line 3405

#### (nullable) parent :ProtoBuf.Reflect.T

Parent object.

##### Type:

- ProtoBuf.Reflect.T

Inherited From:
  - ProtoBuf.Reflect.T#parent
Source:
  - protobuf.js, line 1424

#### repeated :boolean

Message field repeated flag.

##### Type:

- boolean

Inherited From:
  - ProtoBuf.Reflect.Message.Field#repeated
Source:
  - protobuf.js, line 3332

#### required :boolean

Message field required flag.

##### Type:

- boolean

Inherited From:
  - ProtoBuf.Reflect.Message.Field#required
Source:
  - protobuf.js, line 3325

#### resolvedType :ProtoBuf.Reflect.T|null

Resolved type reference inside the global namespace.

##### Type:

- ProtoBuf.Reflect.T | null

Inherited From:
  - ProtoBuf.Reflect.Message.Field#resolvedType
Source:
  - protobuf.js, line 3362

#### syntax :string

Syntax level of this definition (e.g., proto3).

##### Type:

- string

Inherited From:
  - ProtoBuf.Reflect.Message.Field#syntax
Source:
  - protobuf.js, line 3398

#### type :string|Object

Message field type. Type reference string if unresolved, protobuf type if resolved. In a map field, this is the value type.

##### Type:

- string | Object

Inherited From:
  - ProtoBuf.Reflect.Message.Field#type
Source:
  - protobuf.js, line 3355

### Methods

#### build()

Builds this type.

Inherited From:
  - ProtoBuf.Reflect.T#build
Source:
  - protobuf.js, line 1479

##### Throws:

If this type cannot be built directly

Type
  Error

#### calculate(value, messagenon-null) → {number}

Calculates the length of this field's value on the network level.

##### Parameters:

Name | Type | Description
--- | --- | ---
`value` | * | Field value
`message` | ProtoBuf.Builder.Message | Runtime message

Inherited From:
  - ProtoBuf.Reflect.Message.Field#calculate
Source:
  - protobuf.js, line 3635

##### Returns:

Byte length

Type
  number

#### decode(wireType, buffer, skipRepeatedopt) → {*}

Decode the field value from the specified buffer.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`wireType` | number |  | Leading wire type
`buffer` | ByteBuffer |  | ByteBuffer to decode from
`skipRepeated` | boolean | <optional> | Whether to skip the repeated check or not. Defaults to false.

Inherited From:
  - ProtoBuf.Reflect.Message.Field#decode
Source:
  - protobuf.js, line 3693

##### Throws:

If the field cannot be decoded

Type
  Error

##### Returns:

Decoded value: array for packed repeated fields, [key, value] for map fields, or an individual value otherwise.

Type
  *

#### encode(value, buffer, messagenon-null) → {ByteBuffer}

Encodes the specified field value to the specified buffer.

##### Parameters:

Name | Type | Description
--- | --- | ---
`value` | * | Verified field value
`buffer` | ByteBuffer | ByteBuffer to encode to
`message` | ProtoBuf.Builder.Message | Runtime message

Inherited From:
  - ProtoBuf.Reflect.Message.Field#encode
Source:
  - protobuf.js, line 3561

##### Throws:

If the field cannot be encoded

Type
  Error

##### Returns:

The ByteBuffer for chaining

Type
  ByteBuffer

#### fqn() → {string}

Returns the fully qualified name of this object.

Inherited From:
  - ProtoBuf.Reflect.T#fqn
Source:
  - protobuf.js, line 1452

##### Returns:

Fully qualified name as of ".PATH.TO.THIS"

Type
  string

#### hasWirePresence(value, messagenon-null) → {boolean}

Determines whether the field will have a presence on the wire given its value.

##### Parameters:

Name | Type | Description
--- | --- | ---
`value` | * | Verified field value
`message` | ProtoBuf.Builder.Message | Runtime message

Inherited From:
  - ProtoBuf.Reflect.Message.Field#hasWirePresence
Source:
  - protobuf.js, line 3509

##### Returns:

Whether the field will be present on the wire

Type
  boolean

#### toString(includeClassopt)

Returns a string representation of this Reflect object (its fully qualified name).

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`includeClass` | boolean | <optional> | Set to true to include the class name. Defaults to false.

Inherited From:
  - ProtoBuf.Reflect.T#toString
Source:
  - protobuf.js, line 1470

##### Returns:

String representation

#### verifyValue(value, skipRepeatedopt) → {*}

Checks if the given value can be set for this field.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`value` | * |  | Value to check
`skipRepeated` | boolean | <optional> | Whether to skip the repeated value check or not. Defaults to false.

Inherited From:
  - ProtoBuf.Reflect.Message.Field#verifyValue
Source:
  - protobuf.js, line 3461

##### Throws:

If the value cannot be set for this field

Type
  Error

##### Returns:

Verified, maybe adjusted, value

Type
  *