Skip to content

Prettier removes Promise<void> type and other annotations in TypeScript arrow functionsΒ #3578

@danielbjornadal

Description

@danielbjornadal

Summary

Prettier removes Promise type annotations in TypeScript arrow functions, even with "arrowParens": "always" configured, making it impossible to satisfy TypeScript's requirement for generic type parameters on Promises.

Steps To Reproduce:

  1. Create a new TypeScript file with an interface containing Promise return types
  2. Configure Prettier with "arrowParens": "always"
  3. Save the file and observe Prettier's formatting
  4. Note that TypeScript shows an error: "Generic type 'Promise' requires 1 type argument(s)"

Expected result

Prettier should preserve the Promise type annotation when formatting TypeScript files, especially when "arrowParens": "always" is set.

Example:

interface Example {
  myFunction: (param: string) => Promise<void>;
}

Actual result

Prettier removes the type parameter, resulting in invalid TypeScript:

interface Example {
  myFunction: (param: string) => Promise;
}

This causes TypeScript to error with "Generic type 'Promise' requires 1 type argument(s)".

Additional information

The only current workarounds are // @ts-ignore or // prettier-ignore

Neither solution is ideal for maintaining clean, type-safe code.

VS Code Version: 1.95.3

Prettier Extension Version: 11.0.0

OS and version: Ubuntu 24.04

Prettier Log Output

[INFO] Prettier Options:
{
  "plugins": ["@trivago/prettier-plugin-sort-imports"],
  "importOrder": [...],
  "importOrderSeparation": true,
  "importOrderSortSpecifiers": true,
  "printWidth": 120,
  "arrowParens": "always"
}
[INFO] Prettier Resolution: Prettier Path: /Users/[username]/project/node_modules/prettier
[INFO] Formatting file:///Users/[username]/project/src/types.ts
[INFO] Formatting completed in 0.1s

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions