import Vue from 'vue' import App from './App.vue' declare global { interface Array { joinGeneral (item: T, endItem: T|null): Array; /* eslint-disable-next-line */ unique (predicate: (elem: T) => any): Array; } } /* eslint-disable-next-line */ Array.prototype.joinGeneral = function (item, endItem = null) { if (endItem === null) { return this.slice(0, -1).flatMap(x => [x, item]).concat(this.slice(-1)) } else { return this.slice(0, -2).flatMap(x => [x, item]).concat(this.slice(-2, -1).flatMap(x => [x, endItem])).concat(this.slice(-1)) } } /* eslint-disable-next-line */ Array.prototype.unique = function (predicate: (elem: T) => any): Array { const set = new Set() const result: Array = [] as T[] this.forEach(elem => { const predResult = predicate(elem) if (!set.has(predResult)) { set.add(predResult) result.push(elem) } }) return result } Vue.config.productionTip = false new Vue({ render: h => h(App) }).$mount('#app')