Necesito implementar una función de concatenación de cadenas, la funcionalidad se muestra a continuación,
function concatenation(original: string, name1?, name2?){ return original + name1 + name2; } Sin embargo, la pregunta es, puede haber más parámetros sobre el name ; por lo tanto, este no es un buen estilo de codificación. Quiero cambiar su como se muestra a continuación.
function concatenation(original: string, name?:[string]){ return original + ...name1; }Pero de esta manera, el programa informará de un error. ¿Cómo podría lograrlo?
Puedes usar rest con join como:
function concatenation(original: string, name1?, name2?) { return original + name1 + name2; } concatenation('Original', 'Name1', 'Name2', 'Name3');Esto puede manejar cualquier número de argumentos de cadena
function concatenation2(...names: string[]) { return names.join(''); } concatenation2('Original', 'Name1', 'Name2', 'Name3'); function concatenation2(...names) { return names.join(''); } console.log(concatenation2('Original', 'Name1', 'Name2', 'Name3'));Proporcionar su informe de error hará que sea más fácil descubrir su problema real .
De hecho, lo que realmente hace la concatenation de funciones es simplemente concatenar múltiples variables de cadena, aunque trató de distinguirlas por su nombre. Como desea colocar las variables en los argumentos de la función, simplemente puede usar la asignación de desestructuración .
function concatenation(...items) { // `items` is an Array consisting of all the function arguments. items.join(''); } concatenation(1,2,3) // "123" concatenation("a", "bcd", "ef", "g", "h") // "abcdefgh"Y tenga en cuenta que no puede usar anotaciones de tipo TypeScript en JavaScript. Además, las anotaciones de tipo en la descripción de la pregunta en realidad no son legales.
No puede desestructurar el objeto javascript con ningún tipo de operador aritmético como (+, -, etc.).
function concatenation(original: string, names?: [string]) { return `${original}${names.split("")}`; } concatenation("original", ["name1", "name2", "name3"]);