Skip to content

no-string-discriminator

Full name
@azure-tools/typespec-azure-core/no-string-discriminator

Azure services favor using an extensible union to define the discriminator property. This allow the service to add new discriminated models without being breaking.

  • Missing explicit property
@discriminator("kind")
model Pet {
name: string;
}
  • Property is a string
@discriminator("kind")
model Pet {
kind: string;
name: string;
}
  • Property is a closed enum
@discriminator("kind")
model Pet {
kind: PetKind;
name: string;
}
enum PetKind {
cat,
dog,
}
  • Property is a closed enum
@discriminator("kind")
model Pet {
kind: PetKind;
name: string;
}
union PetKind {
cat: "cat",
dog: "dog",
string,
}