## Data Types
Variables in Lightview can be typed as any of the standard JavaScript `typeof` results with the exception of "undefined".
Runtime coercion is used and errors are thrown if a value can't be coerced into the correct type. If you do not want coercion,
then use the extended data types described [next](./4-extended-data-types.html).
- "boolean"
Since the focus of Lightview is UI management the values 1, "true", "on", "checked", "selected" all coerce to `true`. The values "false" and 0 coerce to `false`. The value `undefined` remains `undefined`, i.e. an indeterminate state.
- "function"
Variables of type "function" are useful for defining event listeners [as described later](./8-event-listeners.html).
- "number"
- "object"
- "string"
- "symbol"
Additionally, variables can be of type "any".
And, if you wish, a variable to be an instance of a particular type of object, you can use an unquoted reference to
any in scope constructor, e.g. `Array` or `MyCustomConstructor`.
The REPL is configured to display assignment results and errors. Try modifying the `testVariable` type and assignment.
Or, cut and paste this example into the code section. Then modify `[1,2,3]` to just be `1` or "1,2,3":
```javascript
currentComponent.mount = function() {
this.variables({result:"any"},{reactive});
this.variables({testVariable:Array});
try {
testVariable = [1,2,3];
result = testVariable;
} catch(e) {
result = e+"";
}
}
```