The process of getting type definitions in place for all of Ember.js and its ecosystem is way, way too big for any one person or even a small handful of people to manage alone. This is something we’re going to take on as a community.

New typings for Ember.js itself

We’re actively working on type definitions for Ember which will give us actually-useful-and-correct type checking for Ember’s custom object model. Today, if you use Ember.get or Ember.set , you get no help from the type system. When we finish, those will be type-checked by the compiler and will error if you try to assign the wrong values!

Importantly, the typings we’re shipping will be backwards compatible with the existing Ember API, but will also include support for the RFC #176 JavaScript Modules API. TypeScript’s module definition system will let us support both in parallel, and we will. Backwards compatibility and stability without stagnation are things we value for this addon just as much as the rest of the Ember.js ecosystem does.

This effort, led by Derek Wickern (@dwickern), is ongoing in the typed-ember/ember-typings repository. (If you’re wondering why we’re not just doing it in the DefinitelyTyped repository, see below.) We probably won’t be able to get to 100% of everything the Ember Object model does—Ember’s custom object model is incredibly sophisticated, and TypeScript actually still can’t totally express it—but Derek already has most of it working. This will be a huge step forward.

To be clear, we’re not forking the way you get types. We’ll upstream all of this work to DefinitelyTyped as soon as we have them working, but the DefinitelyTyped repo is huge and very busy; it’s not a great place to do this kind of substantial rework of existing types. And we really don’t need to have all the other type definitions DefinitelyTyped supplies in our way as we’re working, either. Having a separate repo gives us a place we can work on types, try them out as a community, etc. before creating PRs on DefinitelyTyped and publishing them officially.