# Typescript ReturnType

2019-08-31

Typescript includes several useful utility types to enhance the type declarations of your code-base.

The `ReturnType`

function is one of my favorite ones, as it helps reduce type definition duplication.

Suppose you have the following function definition:

```
type IsInText = (
text: string
) => (
term: string,
minCount: number,
maxCount?: number,
caseSensitive?: boolean
) => boolean
```

Now we want to write a function `allTermsInText`

, that takes the function *returned by* `isInText`

as an argument. It should be used like:

`allTermsInText(["Typescript", "awesome"], isInText("Typescript is awesome!"))`

Here is the definition **without** the utility type:

```
type AllTermsInText = (
terms: string[],
search: (
term: string,
minCount: number,
maxCount?: number,
caseSensitive?: boolean
) => boolean
) => boolean
```

And here the same function definition, but using ** ReturnType** for the parameters:

```
let AllTermsInText = (terms: string[], search: ReturnType<IsInText>) => {
return !terms.find(term => !search(term, 1))
}
```