import BaseApp from './BaseApp'; type Selector = { year: Year; month: Month; } export default abstract class MonthBasedApp extends BaseApp> { abstract parseYearMonth(year: string, month: string): Selector | null; override parsePath(): Selector | null { const match = /\/(-?\d+)\/(\d+)/.exec(window.location.pathname); if (!match) return null; return this.parseYearMonth(match[1], match[2]); } override generatePath({year, month}: Selector) { return `/${year}/${month}`; } }