Unnecessary new lines injected by typescript parser.
**Prettier 1.19.1**
[Playground link](https://prettier.io/playground/#N4Igxg9gdgLgprEAuEcAeAHCAnGACSKAZ3wDEII8BePAMxwHcBDbAEwCU5aAKbjbCBiJI85CAAUBQgDR5sXEZ1oAeABIAVALIAZAKIAbOAFsEMAHwBKEQCkAygA0AdAeOnqZvMAA6UPHLgwAK7YvsqsAJYAbngA9GYA3D4AvhaJUD7oWLgE0CR4AEIs1HSMLBxcvPyCwgUsktWy8rSKXGpaeoYmsJY2Ds6dbgA+eFCB+vrunj5+8kEheGFRsQnJqT4+gURw2ESORkwYvJvbIgCqW9hWeOfbk96+-nO+x9hpKSDSIIIw4bnIoCwBAxxCwEERkCAmJEIOFWB8QAAjbBMMAAawCtgwKPCUAA5sgYNhAnBPgALGBGfQAdVJ4XgRCxYDgtjBdKidIAnhCwERwZ8cRcYJImLj9shaEx9FtPgArIhofLItEYpgmbQ4uDiyXSkBytC2HG4wwARUCEHgWqlJJAWJ22whMA5GDgRDA2HCGBg8P4OJgVNhMFJyAAjAAmAAMnyqWypyIwEP4Lu2kU1nwAjmb4PUhBCmEQALRQOBwVgl+HyDPheTC0VMS06rZGcIEonWoiGk2ZzVICVWz4wJgI-2sQPIUP95HhfSGgDCECMYpQUGgqZAx3Ug-BPe11sixIAklBS7BbG6PTAAIJH2yOwz1uBJJJAA)
```sh
--parser typescript
--print-width 120
```

**Input:**
```tsx
export const Foo = forwardRef((props: FooProps, ref: Ref<HTMLElement>): JSX.Element => {
  return <div />;
});

export const Bar = forwardRef((props: BarProps, ref: Ref<HTMLElement>): JSX.Element | null => {
  return <div />;
});

users.map((user: User): User => {
  return user;
})
```

**Output:**
```tsx
export const Foo = forwardRef(
  (props: FooProps, ref: Ref<HTMLElement>): JSX.Element => {
    return <div />;
  }
);

export const Bar = forwardRef((props: BarProps, ref: Ref<HTMLElement>): JSX.Element | null => {
  return <div />;
});

users.map(
  (user: User): User => {
    return user;
  }
);

```

**Expected behavior:**
Prettier leaves the code as is.

This formatting issue only occurs when using the [typescript](https://prettier.io/playground/#N4Igxg9gdgLgprEAuEcAeAHCAnGACSKAZ3wDEII8BePAMxwHcBDbAEwCU5aAKbjbCBiJI85CAAUBQgDR5sXEZ1oAeABIAVALIAZAKIAbOAFsEMAHwBKEQCkAygA0AdAeOnqZvMAA6UPHLgwAK7YvsqsAJYAbngA9GYA3D4AvhaJUD7oWLgE0CR4AEIs1HSMLBxcvPyCwgUsktWy8rSKXGpaeoYmsJY2Ds6dbgA+eFCB+vrunj5+8kEheGFRsQnJqT4+gURw2ESORkwYvJvbIgCqW9hWeOfbk96+-nO+x9hpKSDSIIIw4bnIoCwBAxxCwEERkCAmJEIOFWB8QAAjbBMMAAawCtgwKPCUAA5sgYNhAnBPgALGBGfQAdVJ4XgRCxYDgtjBdKidIAnhCwERwZ8cRcYJImLj9shaEx9FtPgArIhofLItEYpgmbQ4uDiyXSkBytC2HG4wwARUCEHgWqlJJAWJ22whMA5GDgRDA2HCGBg8P4OJgVNhMFJyAAjAAmAAMnyqWypyIwEP4Lu2kU1nwAjmb4PUhBCmEQALRQOBwVgl+HyDPheTC0VMS06rZGcIEonWoiGk2ZzVICVWz4wJgI-2sQPIUP95HhfSGgDCECMYpQUGgqZAx3Ug-BPe11sixIAklBS7BbG6PTAAIJH2yOwz1uBJJJAA) parser. If you switch over to the [babel](https://prettier.io/playground/#N4Igxg9gdgLgprEAuEcAeAHCAnGACSKAZ3wDEII8BePAMxwHcBDbAEwCU5aAKbjbCBiJI85CAAUBQgDR5sXEZ1oAeABIAVALIAZAKIAbOAFsEMAHwBKEQCkAygA0AdAeOnqZvMAA6UPHLgwAK7YvsqsAJYAbngA9GYA3D4AvhaJUD7oWLgE0CR4AEIs1HSMLBxcvPyCwgUsktWy8rSKXGpaeoYmsJY2Ds6dbgA+eFCB+vrunj5+8kEheGFRsQnJqT4+gURw2ESORkwYvJvbIgCqW9hWeOfbk96+-nO+x9hpKSDSIIIw4bnIoCwBAxxCwEERkCAmJEIOFWB8QAAjbBMMAAawCtgwKPCUAA5sgYNhAnBPgALGBGfQAdVJ4XgRCxYDgtjBdKidIAnhCwERwZ8cRcYJImLj9shaEx9FtPgArIhofLItEYpgmbQ4uDiyXSkBytC2HG4wwARUCEHgWqlJJAWJ22whCKYCLg+nh-BxMCpsJgpOQAEYAEwABk+VS2VORGAh-DgF0ims+AEczfB6kIIUwiABaKBwOCsfPw+TJ8LyYWipiWnVbIzhAlE61EQ0mlOapASq2fGBOr2sH3IANd5HhfSGgDCECMYpQUGgCZAx3UTvB7e11sixIAklAC7BbGBsOEMDAAII72wwDmGKtwJJJIA) parser, the code remains untouched.

The extra lines that prettier injects seem overkill, especially for the `users.map` example.

It's interesting though how that functions that have a union return type, don't get rewritten to a new line.