//// [typesWithOptionalProperty.ts]
// basic uses of optional properties without errors

interface I {
    foo: string;
    bar?: number;
    baz? (): string;
}

var a: {
    foo: string;
    bar?: number;
    baz? (): string;
};

var b = { foo: '' };
var c = { foo: '', bar: 3 };
var d = { foo: '', bar: 3, baz: () => '' };

var i: I;

i = b;
i = c;
i = d;

a = b;
a = c;
a = d;

i = a;
a = i;

//// [typesWithOptionalProperty.js]
// basic uses of optional properties without errors
var a;
var b = { foo: '' };
var c = { foo: '', bar: 3 };
var d = { foo: '', bar: 3, baz: function () { return ''; } };
var i;
i = b;
i = c;
i = d;
a = b;
a = c;
a = d;
i = a;
a = i;
