react-testing-library icon indicating copy to clipboard operation
react-testing-library copied to clipboard

TypeScript: unexpected type errors when `exactOptionalPropertyTypes` is enabled

Open OliverJAsh opened this issue 1 year ago • 0 comments

  • @testing-library/react version: see below
  • Testing Framework and version: N/A
  • DOM Environment:

Relevant code or config:

{
  "dependencies": {
    "@testing-library/react": "^15.0.6",
    "typescript": "^5.4.5"
  }
}

{
  "compilerOptions": {
    "strict": true,
    "exactOptionalPropertyTypes": true,
    "lib": ["DOM", "ESNext"]
  }
}

import { renderHook } from '@testing-library/react';
renderHook;

What happened:

$ yarn run tsc
yarn run v1.22.22
warning package.json: No license field
$ /Users/oliver/Code/reduced-test-cases/testing-library-react-exactOptionalPropertyTypes/node_modules/.bin/tsc
node_modules/@testing-library/react/types/index.d.ts:58:18 - error TS2430: Interface 'ClientRenderOptions<Q, Container, BaseElement>' incorrectly extends interface 'RenderOptions<Q, Container, BaseElement>'.
  Types of property 'hydrate' are incompatible.
    Type 'boolean | undefined' is not assignable to type 'boolean'.
      Type 'undefined' is not assignable to type 'boolean'.

58 export interface ClientRenderOptions<
                    ~~~~~~~~~~~~~~~~~~~

node_modules/@testing-library/react/types/index.d.ts:185:18 - error TS2430: Interface 'ClientRenderHookOptions<Props, Q, Container, BaseElement>' incorrectly extends interface 'RenderHookOptions<Props, Q, Container, BaseElement>'.
  Types of property 'hydrate' are incompatible.
    Type 'boolean | undefined' is not assignable to type 'boolean'.

185 export interface ClientRenderHookOptions<
                     ~~~~~~~~~~~~~~~~~~~~~~~


Found 2 errors in the same file, starting at: node_modules/@testing-library/react/types/index.d.ts:58

error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Reproduction:

See above.

Problem description:

Unexpected TypeScript errors regarding exactOptionalPropertyTypes.

Suggested solution:

In ClientRenderHookOptions and ClientRenderOptions (node_modules/@testing-library/react/types/index.d.ts):

-  hydrate?: false | undefined
+  hydrate?: false

OliverJAsh avatar May 03 '24 23:05 OliverJAsh