Quiero tener una opción variable con valores predeterminados, pero solo podría ingresar un valor predeterminado como este:
const program = new Command("ingest"); program .option("-e, --extensions <ext...>", "file extensions to load", "dat") .parse(process.argv); const options = program.opts(); Esto funciona y el valor predeterminado es "dat" . Pero, ¿qué debo hacer si el valor predeterminado es una matriz de varias cadenas como ["dat", "txt"] ?
La primera solución que encontré es no poner un valor predeterminado y luego, si options.extensions no está definido, cargarlo con la matriz predeterminada. Esto funciona, pero obviamente el valor predeterminado no aparece en la ayuda.
La segunda solución que resuelve este pequeño problema es ingresar el valor predeterminado como una cadena separada por espacios:
program.option("-e, --extensions <ext...>", "file extensions to load", "dat txt");y entonces:
if(typeof options.extensions === "string") options.extensions = options.extensions.split(" ") De esta manera, options.extensions es siempre una matriz de cadenas.
¿Podría .addOption(new Option()) ayudar aquí? Desafortunadamente, no puedo encontrar documentación para la clase Option además de los tres ejemplos proporcionados.
¡Gracias! mario
El valor predeterminado no tiene que ser una cadena. Use la matriz, e incluso podría simplificar su código posterior, ya que el valor de la opción siempre será una matriz.
program.option("-e, --extensions <ext...>", "file extensions to load", ["dat", "txt"]); TypeScript actualizado para incluir string[] en los tipos permitidos en Commander v9.3.0.
La forma más amigable con TypeScript de agregar una matriz predeterminada a una opción variable que he encontrado es:
program.addOption(new Option("-e, --extensions <ext...>", "file extensions to load").default(["dat", "txt"])Espero eso ayude