11

I was wondering how could one declare a typed-function array in TypeScript.

For instance, say I have a field which can hold a function that has no arguments and returns void:

private func: () => void;

Now, say I wanted a field which can hold an array of such functions:

private funcs: () => void  [];

This is obviously the wrong way to do what I intended since the compiler considers this to be a function which returns an array of voids.

Trying to isolate the inline prototype declaration with parentheses as in:

private funcs2: (  () => void  ) [];

causes a compiler error.

Does anyone have an idea of how this could be accomplished ?

1

1 Answer 1

23

You'll need to use the full type literal syntax instead of the => shorthand:

private funcs: { (): void; }[];

You could also make an interface if that looks too weird:

// (elsewhere at top-level)
interface foo {
    (): void;
}

class etc {
    private funcs: foo[];
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.