javascript - ¿Propiedad no utilizada eliminada?
Primero lo primero, mi clase:
export class FooBar {
...
isFavorite: boolean = false;
constructor() {
this.isFavorite = false;
}
}
Usando Lodash, ordeno una lista de FooBar, para que mis favoritos estén en la parte superior de la lista:
this.fooBars = _.orderBy(this.fooBars, ['isFavorite', 'name'], ['desc', 'asc']);
Cuando pongo un artículo en favoritos y miro mi console.log, indica esto:
Tenga en cuenta que el #3 no tiene la propiedad isFavorite...
Siempre que no establezco isFavorite, no se muestra. Esto hace que Lodash ordene de manera incorrecta.
¿Hay alguna manera de mostrar siempre esta propiedad, incluso cuando no se usa/no está establecida/es falsa?
Intenté:
- Establecer la propiedad en falso en la clase
- Establecer la propiedad en falso en el constructor de la clase
- Iterar sobre this.foobars en mi componente, estableciéndolos todos en falso
- Agregar una interfaz a FooBar
Respuesta #1
Creo que esa es la forma de TypeScript de asignar un valor predeterminado a una propiedad de clase
export default class FooBar {
constructor(private isFavorite: boolean = false) {
...
}
}
o simplemente
export class FooBar {
constructor() {
this.isFavorite = false;
}
}
O podrías usar una función en el iterador de _.orderBy para ordenar tu lista en consecuencia:
var foobars = [{isFavorite:false, name:"aaa"}, {isFavorite:true, name:"bbb"}, {isFavorite:false, name:"ccc"}, {name:"ddd"}]
foobars = _.orderBy(foobars, [function(foobar) {
return foobar.isFavorite == true;
}, "name"], ["desc", "asc"]);
console.log(foobars)<script src="https://cdn.jsdelivr.net/npm/[email /lodash.min.js"></script>