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 ?
To specify the type of an array like [1, 2, 3] , you can use the syntax number[] ; this syntax works for any type (e.g. string[] is an array of strings, and so on).
There is no difference at all. Type[] is the shorthand syntax for an array of Type . Array<Type> is the generic syntax.
To declare a function with an array return type, set the return type of the function to an array right after the function's parameter list, e.g. function getArr(): string[] {} . If the return type of the function is not set, TypeScript will infer it.
To execute an array of functions, we can use a for loop or the forEach() array method in JavaScript.
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[];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With