Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug]: `@encode(string)` int64 default becomes `null`, and numeric examples ignore the encoding

Abierto Apto para principiantes
#12,059 1 comentario 1 reacción 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Om-singhaI ya está trabajando en esto.

Desde el 29/9/2026.

  • #12060 de @Om-singhaI — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
openapi
Área
api

Línea de trabajo

Comienza en packages/compiler/src/lib/examples.ts y lee serializeValueAsJson, centrándote en su tratamiento de NumericValue y en el @encode resuelto de la propiedad. Reproduce el modelo Account proporcionado e inspecciona la salida de OpenAPI en busca de valores predeterminados y ejemplos. La tarea está terminada cuando los valores int64 y decimal codificados se emiten como cadenas, incluido el valor predeterminado int64 grande, en lugar de null o números JSON.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug compiler:core triaged:core
Describe the bug

With @encode(string) id: int64 = 9007199254740993, the OpenAPI output has "default": null, so the value is lost. Other defaults and @example values on @encode(string) int64 and decimal properties come out as JSON numbers, which don't match the type: string next to them.

serializeValueAsJson in packages/compiler/src/lib/examples.ts already resolves the property's @encode, but the NumericValue case returns asNumber() without checking it, and asNumber() gives null when a JS number can't hold the value exactly. Dates and durations already use the encoding in that function (#11731 fixed the milliseconds case). Happy to send a PR.

Reproduction
@example(#{ id: 42, balance: 1050.25 })
model Account {
  @encode(string) id: int64 = 9007199254740993;
  @encode(string) balance: decimal = 0;
}

OpenAPI 3.0.0 output on current main. 3.1.0 and 3.2.0 give the same defaults.

"properties": {
  "id": { "type": "string", "format": "int64", "default": null },
  "balance": { "type": "string", "format": "decimal", "default": 0 }
},
"example": { "id": 42, "balance": 1050.25 }

Expected "9007199254740993" and "0" for the defaults, and { "id": "42", "balance": "1050.25" } for the example.

Lenguaje dominante
Java
Estrellas
5.9k
Forks
404
Merge medio
2 d 2 h
PR fusionados (30 d)
134

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

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.

Más de microsoft/typespec

Todos los issues de microsoft/typespec

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.