HI, Good question.
Was playing today with TypeScript. Really like how unobtrusive it is.
You can use it whenever you like to, does not to my experience screw up your code.
Moved our 6k+ loc Jasmine test to it.

But real problem starts when start mixing TypeScript with ExtJS and with real production code, where you have structural types.

Example I came up with (would love to see your usages as well)

Code:
Ext.define('WebApp.model.RenderableRecord', {
    extend: 'Ext.data.Model',
    idPropert: 'id',

    isRenderableRecord : true,

    fields: [
        { name: 'id', type: 'string' },
        { name: 'name', type: 'string' },
        {
            name: 'renderable',
            convert: function (val, model) {return val;}
        },
    ],
    
    renderItems: function (renderer: Function) {
        var me = this;
        return function (config: Object) {
            renderer(me.get('renderable'), config);
        }
    },

});

interface View  {
    render(renderTo: string): void;
}

interface Renderable {
    rendrer(itemToRender: Object, config: Object) : View;
}

interface RenderableRecord {
    get(val: string): any;
    isRenderableRecord: bool;
    renderItems(val: Function):(config: Object) => View;
}

var record = <RenderableRecord> Ext.create('WebApp.model.RenderableRecord');
var renderable = <Renderable> record.get('renderable');
var view = record.renderItems(renderable.rendrer.bind(renderable));

Would love to have structural typing or pattern matching.
Code:
get(val: 'id'): string;
get(val: 'renderable'): Renderable  // but that probably would cause more issues with ExtJS?
get(val:string): any
get(val: any): throw Error // in case all of the above patterns exhausted and we got called with some bogus data
What's your usages, patterns, ideas?