Búsqueda de sitios web

swagger - ¿Cómo generar interfaces de modelos realmente minimalistas con openapi-generator usando typescript-fetch?


Estoy experimentando con openapi-generator y su implementación del generador typescript-fetch. En general, el generador es bueno, pero en mi honesta opinión hace un poco demasiado.

Puedo configurar el openapi-generator para generar solo modelos, lo cual sería mi objetivo final. Sin embargo, el generador typescript-fetch insiste en generar funciones auxiliares de serialización y deserialización, que importan algunos exists y map desde ../runtime. Pero mientras solo se generan modelos, el ../runtime obviamente falta. En mi caso, no necesito en absoluto estos helpers de (des)serialización y me gustaría omitirlos completamente. Actualmente, no veo ninguna opción para hacerlo.

ExampleModel.ts

// This line does not compile in model-only mode
import { exists, mapValues } from '../runtime';

/**
 * 
 * @export
 * @interface ExampleModel 
 */
export interface ExampleModel {
    /**
     * 
     * @type {number}
     * @memberof ExampleModel 
     */
    someNumber?: number;
}

// These functions are useless for me and do only trouble

export function ExampleModelFromJSON(json: any): AuthenticateUserCommand {
    return ExampleModelFromJSONTyped(json, false);
}

export function ExampleModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ExampleModel {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'someNumber': !exists(json, 'someNumber') ? undefined : json['someNumber'],
    };
}

export function ExampleModelToJSON(value?: ExampleModel | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'someNumber': value.someNumber
    };
}

¿Existe una manera de generar un modelo realmente minimalista (interfaces de TypeScript)? ¿Podría personalizar las plantillas de mustache de alguna manera dentro del alcance de nuestro proyecto? Cualquier ayuda sería apreciada.