UPDATE - the context of this question was pre-TypeScript 1.4. Since that version, my first guess has been supported by the language. See the update to the a
I figured it out. The problem is that the =>
for a function type literal is itself merely syntactic sugar and doesn't want to compose with []
.
As the spec says:
A function type literal of the form
( ParamList ) => ReturnType
is exactly equivalent to the object type literal
{ ( ParamList ) : ReturnType }
So what I want is:
var h : { (s: string): string; }[]
Complete example:
var f : (string) => string
f = x => '(' + x + ')';
var h : { (s: string): string; }[]
h = [];
h.push(f);
Update:
Judging from this changeset parentheses will be allowed in type declarations in 1.4, so the "first guess" in the question will also be correct:
var h: ((string) => string)[]
Further Update It is in 1.4!