Este fragmento de código es una función en JavaScript diseñada para
analizar un valor e
y devolver una cadena de texto que identifica
el tipo del valor. Actúa como una extensión para manejar los tipos de datos de
una manera más detallada, en particular para diferenciar entre tipos como
array
, string
, null
, y otros.
Esta nueva función no solo identificará el tipo del valor, sino que también ofrecerá una descripción adicional sobre su estructura (como si es vacío o tiene propiedades/valores específicos).
function advancedTypeCheck(value) {
if (value === null) return { type: "null", description: "The value is null." };
if (value === undefined) return { type: "undefined", description: "The value is undefined." };
const basicType = typeof value;
// Handle arrays
if (Array.isArray(value)) {
return {
type: "array",
description: value.length === 0
? "An empty array."
: `An array with ${value.length} elements.`,
details: value,
};
}
// Handle objects
if (basicType === "object") {
const keys = Object.keys(value);
return {
type: "object",
description: keys.length === 0
? "An empty object."
: `An object with ${keys.length} keys: [${keys.join(", ")}].`,
details: value,
};
}
// Handle strings
if (basicType === "string") {
return {
type: "string",
description: value.length === 0
? "An empty string."
: `A string with ${value.length} characters.`,
details: value,
};
}
// Handle numbers
if (basicType === "number") {
return {
type: "number",
description: isNaN(value)
? "The value is NaN (not a number)."
: `A numeric value: ${value}.`,
details: value,
};
}
// Handle functions
if (basicType === "function") {
return {
type: "function",
description: "A JavaScript function.",
details: value.toString(),
};
}
// Handle booleans
if (basicType === "boolean") {
return {
type: "boolean",
description: `The boolean value is ${value}.`,
details: value,
};
}
// Fallback for other types
return {
type: basicType,
description: `A value of type '${basicType}'.`,
details: value,
};
}
¿Qué hace esta función avanzada?
-
Detecta y describe tipos de datos:
-
Diferencia entre
null
,undefined
,array
,object
,string
,number
,boolean
, yfunction
. -
Proporciona una descripción adicional sobre el valor.
-
-
Incluye detalles sobre el valor:
-
Por ejemplo:
-
Para un array, indica si está vacío o cuántos elementos contiene.
-
Para un objeto, muestra el número de claves y una lista de ellas.
-
-
-
Maneja casos especiales:
-
Identifica valores como
NaN
. -
Proporciona representaciones de funciones.
-
console.log(advancedTypeCheck(null));
// { type: "null", description: "The value is null." }
console.log(advancedTypeCheck([1, 2, 3]));
// { type: "array", description: "An array with 3 elements.", details: [1, 2, 3] }
console.log(advancedTypeCheck({ a: 1, b: 2 }));
// { type: "object", description: "An object with 2 keys: [a, b].", details: { a: 1, b: 2 } }
console.log(advancedTypeCheck("Hello, world!"));
// { type: "string", description: "A string with 13 characters.", details: "Hello, world!" }
console.log(advancedTypeCheck(42));
// { type: "number", description: "A numeric value: 42.", details: 42 }
¿Para qué sirve?
Esta función es útil para:
- Depurar o analizar valores complejos en aplicaciones.
- Generar descripciones detalladas de datos para documentación o herramientas de desarrollo.
- Gestionar dinámicamente diferentes tipos de datos.
Aquí va el código.