Skip to content

Type error with .openapi() after .optional() on TypeScript 6 (VSCode 1.114) #380

Description

@artursouzagarcia

After updating VSCode to version 1.114 (which bundles TypeScript 6), I started getting the following type error when using zod-to-openapi:

Property 'openapi' does not exist on type 'ZodOptional'. ts(2339)

However:

tsc runs without errors
the project builds successfully
runtime behavior is correct

This issue only appears inside the VSCode editor (tsserver), suggesting a compatibility problem with TypeScript 6.

Reproduction

import { z } from "zod";

z.string().optional().openapi({ example: "test" }); // ❌ TS error in VSCode

Expected behavior
.openapi() should be available even after chaining .optional().

Observed behavior
TypeScript (via VSCode tsserver with TS 6) reports that .openapi() does not exist on ZodOptional.

Workarounds

Change method order
z.string().openapi({ example: "test" }).optional(); // ✅ works
Force VSCode to use workspace TypeScript (e.g., TS 5.x)
TypeScript: Select TypeScript Version → Use Workspace Version
Downgrade VSCode (pre-1.114)

Environment

zod: (your version)
zod-to-openapi: (your version)
TypeScript (workspace): e.g. 5.x
VSCode: 1.114
VSCode TypeScript version: 6.0 (bundled)

Notes

This seems related to stricter type inference changes in TypeScript 6 affecting method chaining on wrapped Zod types (ZodOptional, etc.). Possibly the .openapi() extension is not being preserved across chained transformations under the new type system.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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