Skip to content

October 2022

This release contains breaking changes:

  • TypeSpec: Cannot extends or is a model expression via alias
  • Api: Removed createProgram and changed compile parameter order
  • TypeSpec Deprecation @service decorator replacing @serviceTitle and @serviceVersion
  • TypeSpec Api: Move @discriminator to compiler

[TypeSpec] Cannot extends or is a model expression via alias PR 1004

Using model expression for is or extends directly was already forbidden.

model IsModelExpr is {bar: string} {}
model ExtendsModelExpr extends {bar: string} {}

The following workaround was however tolerated. This PR remove this functionality.

alias ModExpr = {bar: string};
model IsModelExprWAlias is ModExpr {}
model ExtendsModelExprWAlias extends ModExpr {}

Use a named model instead of an alias.

[API] Removed createProgram and changed compile parameter order

createProgram has been removed in favor of compile. The new compile has the same parameter as createProgram

// Before
createProgram(host, "main.tsp);
// After
compile(host, "main.tsp");

compile api was changed to match the same order as old createProggram

// Before
compile("main.tsp", host);
// After
compile(host, "main.tsp");

[TypeSpec] Deprecation: @service decorator replacing @serviceTitle and @serviceVersion

  • @serviceTitle has been deprecated
  • @serviceVersion has been deprecated
// Before
@serviceTitle("Pet Store")
@serviceVersion("v1")
namespace PetStore;
// After
@service({"Pet Store", version: "v1"})
namespace PetStore;

This allows to specify the service namespace without any title or version

@service
namespace PetStore;

[TypeSpec] [Api] Move @discriminator to compiler

The @discriminator has been moved to the compiler. This means that if you were using the fully qualified name to reference the decorator @TypeSpec.Rest.disriminator it should be changed to @discriminator

No changes

using TypeSpec.Rest;
@disriminator("kind")
model Pet {}

Before

@TypeSpec.Rest.disriminator("kind")
model Pet {}

After

@disriminator("kind")
model Pet {}

Change to api

the getDiscriminator accessor has also been removed into the compiler.

Before

import { getDiscriminator } from "@typespec/rest";

After

import { getDiscriminator } from "@typespec/compiler";