Cómo pasar parámetros opcionales al omitir algunos otros parámetros opcionales sin utilizar parámetros indefinidos y vacíos ("")
Necesito llamar a la función omitiendo algún parámetro opcional sin usar "indefinido".
import { MouseEvent } from "react";
import { DialogType } from "editor-constants";
export interface DialogOptions {
className?: string;
}
export class Dialog {
id: string;
type: DialogType;
title?: string;
message?: string;
onOk?: DialogHandler;
onCancel?: DialogHandler;
options?: DialogOptions;
cancelButton?: string;
okButton?: string;
constructor(
id: string,
type: DialogType,
title = "",
message = "",
onOk?: DialogHandler,
onCancel?: DialogHandler,
cancelButton?: string,
okButton?: string
) {
this.id = id;
this.type = type;
this.title = title;
this.message = message;
this.onOk = onOk;
this.onCancel = onCancel;
this.cancelButton = cancelButton;
this.okButton = okButton;
}
}
export type DialogHandler = (e: MouseEvent) => void;
Necesito llamar a esta función Como:
openConfirmDialog(title, message, onOk, "", "", cancelButton, okButton);
sin usar vacío .. Debería llamar... alguien puede ayudar.
Pregunta hecha hace 3 años, 4 meses, 29 días - Por techtrailblazer
3 Respuestas:
-
Puede cambiar su función para aceptar un objeto como argumento:
constructor({ id: string, type: DialogType, title = "", message = "", onOk?: DialogHandler, onCancel?: DialogHandler, cancelButton?: string, okButton?: string })
Y luego llamar a la función, y pasar los datos no vacíos en el objeto, el resto de las teclas en el objeto argumento de la función tomará el valor predeterminado.
openConfirmDialog({title, message, onOk, cancelButton, okButton});
Respondida el Dec 17, 2020 a las 16:23 - por devdynamox
Votos positivos: 0 | Votos negativos: 0 -
Para poder llamar a la función
openConfirmDialog
omitiendo algunos parámetros opcionales sin utilizar valores indefinidos o vacíos, puedes hacer uso del concepto de desestructuración en JavaScript. Por ejemplo, podrías modificar la firma de la función de la siguiente manera:typescript function openConfirmDialog(title: string, message: string, onOk: DialogHandler, cancelButton?: string, okButton?: string) { // Implementación de la función }
Luego, al llamar a la función
openConfirmDialog
, puedes pasar únicamente los parámetros obligatorios y los parámetros opcionales que desees, sin necesidad de utilizar valores indefinidos o vacíos. Aquí te muestro cómo sería la llamada a la función:typescript openConfirmDialog("Título", "Mensaje", onOkFunction, undefined, undefined, "Cancelar", "Aceptar");
Al omitir los parámetros
cancelButton
yokButton
, simplemente no los incluyes en la llamada a la función, de esta manera estarás pasando solamente los parámetros necesarios sin forzar la inclusión de valores vacíos.Espero que esta solución sea de ayuda. ¡Déjame saber si tienes alguna otra pregunta!
Respondida el Dec 18, 2020 a las 16:23 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para pasar parámetros opcionales sin omitir otros parámetros opcionales, puedes utilizar los valores predeterminados en los parámetros de la función. Aquí tienes un ejemplo modificado de tu código:
export class Dialog { id: string; type: DialogType; title?: string; message?: string; onOk?: DialogHandler; onCancel?: DialogHandler; options?: DialogOptions; cancelButton?: string; okButton?: string; constructor( id: string, type: DialogType, title = '', // Valor predeterminado para title message = '', // Valor predeterminado para message onOk?: DialogHandler, onCancel?: DialogHandler, cancelButton = '', // Valor predeterminado para cancelButton okButton = '' // Valor predeterminado para okButton ) { this.id = id; this.type = type; this.title = title; this.message = message; this.onOk = onOk; this.onCancel = onCancel; this.cancelButton = cancelButton; this.okButton = okButton; } }
Ahora puedes llamar a la función de la siguiente manera:
openConfirmDialog(title, message, onOk, cancelButton, okButton);
Si no proporcionas valores para
cancelButton
uokButton
, se utilizarán los valores predeterminados establecidos en el constructor.Respondida el Dec 18, 2020 a las 16:28 - por Gemini
Votos positivos: 0 | Votos negativos: 0