| --- |
| page_title: type - Functions - Configuration Language |
| description: 'The type function returns the type of a given value. ' |
| --- |
| |
| # `type` Function |
| |
| -> **Note:** This function is available only in Terraform 1.0 and later. |
| |
| `type` returns the type of a given value. |
| |
| Sometimes a Terraform configuration can result in confusing errors regarding |
| inconsistent types. This function displays terraform's evaluation of a given |
| value's type, which is useful in understanding this error message. |
| |
| This is a special function which is only available in the `terraform console` |
| command. It can only be used to examine the type of a given value, and should |
| not be used in more complex expressions. |
| |
| ## Examples |
| |
| Here we have a conditional `output` which prints either the value of `var.list` or a local named `default_list`: |
| |
| ```hcl |
| variable "list" { |
| default = [] |
| } |
| |
| locals { |
| default_list = [ |
| { |
| foo = "bar" |
| map = { bleep = "bloop" } |
| }, |
| { |
| beep = "boop" |
| }, |
| ] |
| } |
| |
| output "list" { |
| value = var.list != [] ? var.list : local.default_list |
| } |
| ``` |
| |
| Applying this configuration results in the following error: |
| |
| ``` |
| Error: Inconsistent conditional result types |
| |
| on main.tf line 18, in output "list": |
| 18: value = var.list != [] ? var.list : local.default_list |
| |---------------- |
| | local.default_list is tuple with 2 elements |
| | var.list is empty tuple |
| |
| The true and false result expressions must have consistent types. The given |
| expressions are tuple and tuple, respectively. |
| ``` |
| |
| While this error message does include some type information, it can be helpful |
| to inspect the exact type that Terraform has determined for each given input. |
| Examining both `var.list` and `local.default_list` using the `type` function |
| provides more context for the error message: |
| |
| ``` |
| > type(var.list) |
| tuple |
| > type(local.default_list) |
| tuple([ |
| object({ |
| foo: string, |
| map: object({ |
| bleep: string, |
| }), |
| }), |
| object({ |
| beep: string, |
| }), |
| ]) |
| ``` |