Skip to content

[typespec-ts] Serialization/deserialization refinements (additional properties, dates, error/body split) #4764

Description

@JialinHuang803

Overview

Umbrella tracking issue for serialization/deserialization refinements in the TypeScript emitter (@azure-tools/typespec-ts, modular). Migrated from Azure/autorest.typescript, which is being retired in favor of this repo.

Work items

1. Additional properties ser/deser follow-ups

Improve ser/deser logic for both legacy and non-legacy formats:

  • Date in additional properties — for ...Record<utcDateTime>, the generated serializer calls serializeRecord(item.additionalProperties ?? {}) without a value serializer, so Date values are emitted raw instead of being encoded to the wire format. (Verified locally.)
  • clientName / wireName inconsistency in additional-properties keys/values
  • multipart/form-data with additional properties (note: overlaps the multipart umbrella [typespec-ts] Complete multipart/form-data and multipart content-type support #4757 — de-dup there)
  • Optional unixTimestamp value of 0 — for an optional @encode("unixTimestamp") date, the deserializer generates !item["value"] ? item["value"] : new Date(item["value"] * 1000); when the value is 0, !0 is truthy so the raw 0 is returned instead of new Date(0). (Required fields are handled correctly.)
  • Migrated from Additional properties follow-ups in Modular autorest.typescript#3122

2. General ser/deser refinement

3. Separate error and body deserialization (nice-to-have)

Notes

  • Test coverage is tracked as part of each fix above, not as standalone issues.

Metadata

Metadata

Labels

emitter:typescriptIssues for @azure-tools/typespec-ts emitter

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions