microsoft/typespec
Publicmirrored fromhttps://github.com/microsoft/typespecAvailable
packages/html-program-viewer/src/utils.ts
23lines · modecode
| 1 | import { getNamespaceFullName, Type, Union } from "@typespec/compiler"; |
| 2 | |
| 3 | export function getIdForType(type: Type): string | undefined { |
| 4 | if (type.kind === "Namespace") { |
| 5 | return getNamespaceFullName(type); |
| 6 | } else if ("interface" in type && type.interface) { |
| 7 | return `${getIdForType(type.interface)}.${type.name}`; |
| 8 | } else if ("model" in type && type.model) { |
| 9 | return `${getIdForType(type.model)}.${type.name}`; |
| 10 | } else if ("namespace" in type && type.namespace) { |
| 11 | return type.namespace.name === "" |
| 12 | ? type.name |
| 13 | : `${getNamespaceFullName(type.namespace)}.${type.name}`; |
| 14 | } else if ("name" in type) { |
| 15 | return type.name?.toString(); |
| 16 | } else { |
| 17 | return undefined; |
| 18 | } |
| 19 | } |
| 20 | |
| 21 | export function isNamedUnion(union: Union): union is Union & { name: string } { |
| 22 | return union.name !== undefined; |
| 23 | } |
| 24 | |