Question: I want to create a function object, which also has some properties held on it. For example in JavaScript I would do:

```
var f = function() { }
f.someValue = 3;

```

Now in TypeScript I can describe the type of this as:

```
var f: { (): any; someValue: number; };

```

However I can't actually build it, without requiring a cast. Such as:

```
var f: { (): any; someValue: number; } =
    <{ (): any; someValue: number; }>(
        function() { }
    );
f.someValue = 3;

```

How would you build this without a cast?

Answer: 
As a shortcut, you can dynamically assign the object value using the ['property'] accessor:

```
var f = function() { }
f['someValue'] = 3;

```

This bypasses the type checking. However, it is pretty safe because you have to intentionally access the property the same way:

```
var val = f.someValue; // This won't work
var val = f['someValue']; // Yeah, I meant to do that

```

However, if you really want the type checking for the property value, this won't work.
This departs from strong typing, but you can do

```
var f: any = function() { }
f.someValue = 3;

```

if you are trying to get around oppressive strong typing like I was when I found this question. Sadly this is a case TypeScript fails on perfectly valid JavaScript so you have to you tell TypeScript to back off.

"You JavaScript is perfectly valid TypeScript" evaluates to false. (Note: using 0.95)