Man: `add` doesn't need to return a boolean, because it always results in the item being in the collection after the fact. You could subclass Set, and make `.add` do that, though, if you like! Alternatively, you could use `.has` prior to calling `.add`, to get your boolean value.
On Wed, Oct 10, 2018 at 1:01 AM Man Hoang <[email protected]> wrote: > The problem with `Set` is that its `add` method returns `this` instead of > `boolean`. If `Set.prototype.add` returned `boolean`, I would have used > `Set`. > > > > That’s why in the `select` method of my sample code, I use a custom > defined method named `pushIfAbsent`. The actual type of `_values` is not > `Array` but a subclass of `Array`. > > ``` js > > export class MyArray<E> extends Array<E> { > > /** > > * Adds [item] to the end of this array if it's not already in this > array. > > * > > * Returns `true` is [item] was added, `false` otherwise. > > */ > > pushIfAbsent(item: E): boolean { > > if (!this.includes(item)) { > > this.push(item); > > return true; > > } > > return false; > > } > > > > /** > > * Removes the first occurrence of [item] from this array. > > * > > * Returns `true` if [item] was in this array, `false` otherwise. > > */ > > remove(item: E): boolean { > > const i = this.indexOf(item); > > if (i >= 0) { > > this.splice(i, 1); > > return true; > > } > > return false; > > } > > } > > ``` >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

