microsoft / microsoft/TypeScript

Spurious TS4094 "exported anonymous class type may not be private" error after upgrading from TS6 to TS7

Abierto
#64,249 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@weswigham ya está trabajando en esto.

Desde el 14/9/2026.

Needs Investigation
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 Search Terms

TS4094, exported anonymous class, private, declaration

### 🕗 Version & Regression Information

- This changed between versions 6.0.3 and 7.0.2

### ⏯ Playground Link

https://github.com/jedwards1211/ts-4094-regression

### 💻 Code

```ts
import ZodRoute from "zod-route-schemas";
import z from "zod";

export const organization = new ZodRoute(
"/org/:organizationId",
z.object({ organizationId: z.number() }),
);
```

### 🙁 Actual behavior

```
> tsc

src/index.ts:4:14 - error TS4094: Property 'parts' of exported anonymous class type may not be private or protected.

4 export const organization = new ZodRoute(
~~~~~~~~~~~~

src/index.ts:4:14 - Add a type annotation to the variable organization.
4 export const organization = new ZodRoute(
~~~~~~~~~~~~

src/index.ts:4:14 - error TS4094: Property 'typeHints' of exported anonymous class type may not be private or protected.

4 export const organization = new ZodRoute(
~~~~~~~~~~~~

src/index.ts:4:14 - Add a type annotation to the variable organization.
4 export const organization = new ZodRoute(
~~~~~~~~~~~~
```

I don't see what the problem is here, because as you can see below, the generated `.d.ts` would have the private field types from the class declaration in `zod-route-schemas`.

### 🙂 Expected behavior

## Outputs the following `.d.ts` like TS5/6:
```ts
import ZodRoute from "zod-route-schemas";
import z from "zod";
export declare const organization: ZodRoute<"/org/:organizationId", z.ZodObject<{
organizationId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
organizationId: number;
}, {
organizationId: number;
}>, z.ZodType<{
organizationId: number;
}, any, {
organizationId: number;
}>, z.ZodType<{
organizationId: number;
}, any, {
organizationId: number;
}>>;
//# sourceMappingURL=index.d.ts.map
```

### Additional information about the issue

**Doesn't happen with `"module": "preserve"`**, but happens with `"commonjs"`, `"nodenext"`, maybe others

`ZodRoute` declaration in `zod-route-schemas/index.d.ts`:

```ts
declare class ZodRoute, FormatSchema extends InvertSchema = InvertSchema, PartialFormatSchema extends PartialSchema = PartialSchema> {
readonly pattern: Pattern;
readonly schema: Schema;
private parts;
readonly formatSchema: FormatSchema;
readonly partialFormatSchema: PartialFormatSchema;
readonly exact: boolean;
private typeHints?;
```

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.