# Type.Optional

The Optional function applies an optional `?` modifier to a type.

## Example

Example usage is shown below.

    const T = Type.Object({                             // const T = {
      x: Type.Optional(Type.Number()),                  //   type: 'object',
      y: Type.Optional(Type.Number()),                  //   required: ['z'],
      z: Type.Number()                                  //   properties: {
    })                                                  //     x: { type: 'number', '~optional': true },
                                                        //     y: { type: 'number', '~optional': true },
                                                        //     z: { type: 'number' }
                                                        //   }
                                                        // }

    type T = Static<typeof T>                           // type T = {
                                                        //   x?: number,
                                                        //   y?: number,
                                                        //   z: number
                                                        // }

## Guard

Use the IsOptional function to guard values of this type.

    const checked = Type.IsOptional(value)              // value is TOptional