For given function type `F`

, and any type `A`

(any in this context means we don't restrict the type, and I don't have in mind `any`

type ðŸ˜‰) create a generic type which will take `F`

as first argument, `A`

as second and will produce function type `G`

which will be the same as `F`

but with appended argument `A`

as a first one.

```
// lets say we have some function type
type SomeF = (a: number, b: string) => number
// and we have our utility type
type AppendArgument<F, A> = ... here your code ðŸ’ª
type FinalF = AppendArgument<SomeF, boolean>
// FinalF should be (x: boolean, a: number, b: string) => number
```

Post your answers in comments. Have fun! Answer will be published soon!

**This series is just starting**. If you want to know about new exciting questions from advanced TypeScript please follow me on dev.to and twitter.

## Top comments (7)

Playground Link

You should keep the arguments' order, so x must after a and b.

I wasn't able to figure out myself how to dynamically take the pair

`arg:type`

out from a generic type function :(UPDATE:

palmfaceJust a note - the term 'append' means to 'add to the end of' (that's why the appendix is at the end of the book). The term you should be using here is `prepend'.

Yes agree.

Interesting tasks, thanks!

To avoid spoilers - my answer in the TS Playground