Cada propiedad que existe en un objeto especifica un grupo de cosas: el tipo, si la propiedad es opcional, y si la propiedad es de solo lectura (no escribible) o no.
Propiedades opcionales
La mayoría de las veces, nos vamos a encontrar lidiando con objetos que pueden tener o no una propiedad definida. En estos casos, marcamos esta propiedad como opcional añadiendo el signo de interrogación ?
al final del nombre de la propiedad.
interface Computador {
os: "windows" | "linux" | "mac";
monitor?: "crt" | "led";
memoria: number;
procesador: "intel" | "amd";
}
function imprimir(computador: Computador) {
console.log(`Sistema operativo: ${computador.os}`);
console.log(`Memoria: ${computador.memoria}`);
console.log(`Procesador: ${computador.procesador}`);
}
imprimir({
os: "windows",
memoria: 8,
procesador: "intel",
});
La salida del programa…
Sistema operativo: windows
Memoria: 8
Procesador: intel
En este ejemplo, la propiedad monitor
es considerada opcional. Podemos elegir si enviarla o no como parte del objeto que se envía como argumento a la función imprimir
. Si no declaramos un valor para esta su valor sera undefined
, es decir no definida.
Si deseamos definir unos valores por default a las propiedades del parámetro computador
, podemos hacer utilizando la destructuración.
interface Computador {
os: "windows" | "linux" | "mac";
monitor?: "crt" | "led";
memoria: number;
procesador: "intel" | "amd";
}
function imprimir({ os, memoria, procesador, monitor = "led" }: Computador) {
console.log(`Sistema operativo: ${os}`);
console.log(`Monitor: ${monitor}`);
console.log(`Memoria: ${memoria}`);
console.log(`Procesador: ${procesador}`);
}
imprimir({
os: "windows",
memoria: 8,
procesador: "intel",
});
La salida del programa…
Sistema operativo: windows
Monitor: led
Memoria: 8
Procesador: intel
Al descomponer el parámetro en cada uno de sus valores, podemos asignar a cada uno de estos un valor por default.