no-string-discriminator
@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.
โ Incorrect
Section titled โโ Incorrectโ- 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,}
โ Correct
Section titled โโ Correctโ- Property is a closed enum
@discriminator("kind")model Pet { kind: PetKind; name: string;}union PetKind { cat: "cat", dog: "dog", string,}