¿Hay alguna manera de crear una función que solo devuelva cadenas? Por contexto, estaba tratando de crear la función adjunta como captura de pantalla, con el objetivo de concatenar dos cadenas y devolver otra cadena. Sin embargo, la función también funcionó con números, ya que los agregó. En algunos casos, solo me gustaría que la función funcione en un tipo de datos en particular. es posible?
function concatenate(a,b) { return (a+b); }Así que o los conviertes en los tipos que quieras
function example (a, b) { return a.toString() + b.toString(); } console.log(example("foo", "bar")); console.log(example(1, 2));O haces la validación de los tipos.
function example (a, b) { if (typeof a !== "string" || typeof b !== "string" ) { throw new Error("Strings expected"); } return a + b; } console.log(example("foo", "bar")); console.log(example(1, 2));Si realmente te importa String vs String
if ( !(typeof a === 'string' || a instanceof String) || !(typeof b === 'string' || b instanceof String)) { throw new Error("Strings expected"); }La función genérica se puede crear aceptando el tipo y puede devolver la función haciendo todas las validaciones que se pueden usar para realizar la acción.
function GenericConcat(typeA,typeB) { return (a,b) => { if (typeof a == typeA && typeof b == typeB ) { return a + b; } throw new Error("Parameter type expected: "+ typeA +"-"+ typeB); } } stringConcate = GenericConcat("string","string"); stringConcate("a","b"); //ab stringConcate("a",1) //Error: Parameter type expected: string-string numberConcate = GenericConcat("number","number"); numberConcate(1,2); //3 numberConcate("a",1); //Error: Parameter type expected: number-number GenericConcat("string","string")("A","B"); GenericConcat("number","number")(1,2);