type
can.Map.prototype.define.type
Converts a value passed to attr into an appropriate value.
define.type(newValue, attrName)
Converts a value passed to attr into an appropriate value.
Parameters
-
newValue
{*}The value passed to
attr. -
attrName
{String}The attribute name being set.
Returns
{*}
The value that should be passed to set or (if there is no set property) the value to set on the map instance.
This
{can.Map}
the instance of the can.Map.
Use
The
typeproperty specifies the type of the attribute. The type can be specified as either a type function that returns the type coerced value or one of the following strings:"string"- Converts the value to a string exceptnullorundefined."date"- Converts the value to a date ornullif the date can not be converted."number"- Passes the value throughparseFloatexcept fornullorundefined."boolean"- Converts falsey,"false"or"0"tofalseand everything else to true."htmlbool"- Likeboolean, but also converts empty strings totrue. Used, for example, when input is from component attributes like<can-tabs reverse/>"*"- Prevents the default type coersion of converting Objects to can.Maps and Arrays to can.Lists.Basic Example
The following example converts the
countproperty to a number and theitemsproperty to an array:When a user tries to set those properties like:
The number converter will be used to turn count into 4, and the items type converter function will be used to turn items into [1,2,3].
Preventing Arrays and Objects from Automatic Conversion
When an array is passed into a can.Map setter, it is automatically converted into a can.List. Likewise, objects are converted into can.Map instances. This behavior can be prevented like the following:
When a user tries to set this property, the resulting value will remain an array.