public typeReference()

in src/docgen/transpile/transpile.ts [696:746]


  public typeReference(ref: reflect.TypeReference): TranspiledTypeReference {
    if (ref.type) {
      const transpiled = this.type(ref.type);
      return TranspiledTypeReference.type(this, ref, transpiled);
    }

    if (ref.unionOfTypes) {
      const transpiled = ref.unionOfTypes.map((t) => this.typeReference(t));
      return TranspiledTypeReference.unionOfTypes(this, ref, transpiled);
    }

    if (ref.arrayOfType) {
      const transpiled = this.typeReference(ref.arrayOfType);
      return TranspiledTypeReference.arrayOfType(this, ref, transpiled);
    }

    if (ref.mapOfType) {
      const transpiled = this.typeReference(ref.mapOfType);
      return TranspiledTypeReference.mapOfType(this, ref, transpiled);
    }

    if (ref.isAny) {
      return TranspiledTypeReference.any(this, ref);
    }

    if (ref.primitive) {
      let transpiled;
      switch (ref.primitive) {
        case 'string':
          transpiled = this.str();
          break;
        case 'boolean':
          transpiled = this.boolean();
          break;
        case 'number':
          transpiled = this.number();
          break;
        case 'date':
          transpiled = this.date();
          break;
        case 'json':
          transpiled = this.json();
          break;
        default:
          throw new Error(`Unsupported primitive type '${ref.primitive}'`);
      }
      return TranspiledTypeReference.primitive(this, ref, transpiled);
    }

    throw new Error(`Unsupported type: ${ref.toString()}`);
  }