Skip to content

November 2023

New Features

@typespec/compiler New Features

  • Add new unixTimestamp32 scalar to standard library.
  • Emitter Framework: Add hook for handling circular references.
  • Emitter Framework: TypeEmitter now supports Tuples.
  • Emit error diagnostic if a model spreads itself within its declaration.
  • Stop showing empty code frame when diagnostic has no location.

@typespec/json-schema New Features

  • Add support for TupleLiteral.

@typespec/openapi3 New Features

  • Support @summary on data types which emit the JSON Schema title property.

@typespec/playground New features

  • Add a format button to the playground command bar.
  • Add a notification to the standalone playground when the playground has been saved.
  • Add resizable panes for the editor and output.

Bug Fixes

@typespec/compiler Bug Fixes

  • Fix: @doc and jsdoc comments disappear from multi-segment or nested namespaces.
  • Fix: Using @overload could result in incorrect unassignable type errors.
  • Fix: Referencing a template in an alias might cause augment decorators to not be applied on types referenced in the aliased type.
  • Fix: Issues with removing keys from RekeyableMap.
  • Fix: Properties filtered with @withVisibility will have their visibility removed. This prevent visibility from being applied twice and rendering invalid models.

@typespec/openapi3 Bug Fixes

  • Fix: Stops emitting an error when using @body _: void in operation parameters and treat it as no body.
  • Fix: Using shared routes would, in some cases, result in a duplicate-header error.

Breaking Changes

Typescript types breaking change

The package.json files for all packages have been changed to use the standard types field instead of the legacy typesVersions field to specify types for subpath exports. This means that packages consuming TypeSpec must use the moduleResolution setting with node16 or nodenext in their tsconfig.json. You might see the following error:

Terminal window
Cannot find module '@typespec/compiler/testing'. Did you mean to set the 'moduleResolution' option to 'nodenext'

This can be resolved by changing the following in tsconfig.json:

"moduleResolution": "ESNext",
"moduleResolution": "node16",

Dropped Support for Node version 16

  • All TypeSpec packages now specify node 18 as the minimum version. Consuming packages should no longer use node 16 and update the node specification in the engines section of their package.json file appropriately.

@typespec/playground Breaking Changes

  • Styles must be imported seperately with import \"@typespec/playground/styles.css\";.

@typespec/versioning Breaking Changes

  • Update targets for @added, @removed, @renamedFrom, @madeOptional and @typeChangedFrom to more clearly communicate where they can be used. Specs that applied these decorators to types that could not be versioned (like namespace) will now receive an error diagnostic.