javascript / expert
Snippet
Subklassifizierung von Native Array mit Symbol.isConcatSpreadable für Next.js Routen-Graph-Flachlegung
Dieses Snippet veranschaulicht die Subklassifizierung des nativen Array-Konstruktors in JavaScript unter Konfiguration von Symbol.isConcatSpreadable. Durch Überschreiben dieses Symbols können Next.js-Sitemap-Builder oder Routen-Aggregatoren benutzerdefinierte OOP-Routensammlungen nahtlos in flache Arrays konvertieren.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
export class RouteCollection extends Array {constructor(...routes) {super(...routes);this[Symbol.isConcatSpreadable] = true;}filterActive() {return this.filter(route => !route.disabled);}}export function buildSitemap() {const publicRoutes = new RouteCollection({ path: '/' }, { path: '/about' });const internalRoutes = [{ path: '/dashboard', disabled: true }, { path: '/settings' }];const allRoutes = [].concat(publicRoutes, internalRoutes);return allRoutes;}
nextjs
Erklärung
1
export class RouteCollection extends Array {
Erweitert die native JS Array-Klasse für domänenspezifische Sammlungen.
2
this[Symbol.isConcatSpreadable] = true;
Konfiguriert ein bekanntes Symbol, das festlegt, wie Array.prototype.concat die Instanz verflacht.
3
const allRoutes = [].concat(publicRoutes, internalRoutes);
Verflacht die benutzerdefinierte Sammlung nahtlos zusammen mit rohen Array-Elementen.