DoneJS StealJS jQuery++ FuncUnit DocumentJS
4.3.0
5.0.0 3.13.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-define
        • static
          • types
        • types
          • PropDefinition
          • ValueOptions
        • behaviors
          • default
          • Default
          • get
          • identity
          • serialize
          • set
          • type
          • Type
          • value
      • can-define/list/list
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-define
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-route-helpers
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • react-view-model
      • react-view-model/component
      • steal-stache
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
      • can-string
      • can-string-to-any
      • can-util
      • can-zone
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

types

  • Edit on GitHub

Defines the type, initial value, and get, set, and serialize behavior for an observable property. All type converters leave null and undefined as is except for the "htmlbool" type converter.

Object

Options

  • observable {function}:

    The default type behavior. It converts plain Objects to DefineMaps and plain Arrays to DefineLists. Everything else is left as is.

  • any {function}:

    Leaves the set value as is, performs no type conversion. Aliased as *.

  • string {function}:

    Converts to a string with ""+val.

  • date {function}:

    Converts to a JavaScript date using Date.parse(val) if a string is given or new Date(val) if a number is passed.

  • number {function}:

    Converts to a number with +(val).

  • boolean {function}:

    Converts to false if val is falsey, "0", or "false"; otherwise, converts to true.

  • htmlbool {function}:

    Like boolean, but converts to true if empty string ("") is passed.

  • compute {function}:

    Allows computes to be passed and the property take on the value of the compute.

  • stringOrObservable {function}:

    Converts plain Objects to DefineMaps, plain Arrays to DefineLists and everything else to strings. This is useful for routing.

Use

Use any of the type names on a PropDefinition's type or directly on the prototype of a DefineMap or DefineList.

import define from "can-define";
import DefineMap from "can-define/map/map";

const Animal = function( name ) {
    this.name = name;
};
define( Animal.prototype, {
    name: { type: "string" }
} );

const Person = DefineMap.extend( {
    name: "string"
} );

You can also pass these functions in directly:

import define from "can-define";
import DefineMap from "can-define/map/map";

const Animal = function( name ) {
    this.name = name;
};
define( Animal.prototype, {
    name: { type: define.type.string }
} );

const Person = DefineMap.extend( {
    name: define.type.string
} );

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 4.3.0.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news