Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Parámetros opcionales y nullish-coalescing

7/22
Recursos

Aportes 10

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Otra forma de hacerlo es de la siguiente manera:

const createProduct2 = (id: string | number, isNew: boolean = true, stock: number = 10) => ({id, stock, isNew})

const p1 = createProduct2(1, true, 12)
console.log(p1)
const p2 = createProduct2(1)
console.log(p2)
const p3 = createProduct2(1, false, 0)
console.log(p3)

Asignamos por defecto un valor al parametro como en JS. En caso de que al momento de llamar la funcion, no pasemos el argumento, usará ese valor por defecto, de lo contrario, si tomará el valor del argumento.

 Nullish Coalescing Operator (??)

Algo importante a tomar en cuenta, los === son incorrectos en los comentarios del código:

Permite manejar valores por defecto, cuando no son enviados atraves de los parametros, este tipo de operador ?? resuelve inconvenientes del operador || , debido que este ultimo interpreta 0, false o ‘ ’, como vacio o valor no enviado, haciendo que se asignen los valores por defecto, generando un comportamiento no esperado.

Tambien podriamos trabajar con clases y entederlo un poco mejor

class Products{
  private id: number = 0;
  private isNew: boolean = false;
  private stock: number = 0;

  constructor (id: number, isNew?: boolean, stock?: number) {
    id    = this.id;
    isNew = this.isNew;
    stock = this.stock;
  }

}

const p1 = new Products(12, true, 1);
const p2 = new Products(12, true);
const p3 = new Products(12);
console.log(p1)
console.log(p2)
console.log(p3)

Les comparto mis apuntes. 😄

Parámetros opcionales

  • Estos son los últimos en ir declarados.
  • Si no usamos o asignamos ese parámetro, tendrá por defecto el valor de undefined.
function functionName (
	parameter1: dataType,
	parameter2?: dataType,
) {
	statements
}

Valores predeterminado de parámetros

function functionName (
	parameter1: dataType,
	parameter2: dataType = value,
) {
	statements
}

Nullish coalescing operator (??) VS logical OR operator (||)

La gran diferencia entre estos dos es que el logical OR operator (||) toma como valores falsos a 0, NaN, strings vacíos ("", '', ``), false, a demás de null y undefined, mientras que nullsh coalescing operator tomo como valores falso solamente a null y undefined.

En el caso de las funciones, se ejecuta la misma, se realizan todos los cálculos que tienen que hacer, pero ambos operadadores ?? y || únicamente se fijan en lo que retorna dichas funciones.
Fuentes:

Nullish coalescing operator (??)

Logical OR operator (||)

Quiero hacer una pequeña correción del minuto 6:05 y es que estan mal las comparaciones, ya que lo hace con la igualdad estricta, cosa que no es asi, ya que con igualdad estricta 0 !== false, al igual que “” !== false.

Los parámetros opcionales van al final

Nullish-coalescing en JS. Si, JavaScript

Antes solíamos hacer validaciones de la siguiente manera

const platziRank = rank || 100

Aquí el problema es que si rank tiene el valor 0, nos lo va a saltar y nos lo va a poner con el valor por defecto. Eso es valido para algunos valores falsy, como “”, 0, etc…
.
La manera de solucionar este problema es con el nullish-coalescing. Que funciona de la siguiente manera

const platziRank = rank ?? 100

Ahora solo va tomar en cuenta los tipos de datos null e undefined para que pase al valor que le estamos asignando por defecto.