toString() {
        // Get parameters that don't correspond to any route segments to append them to the query
        const unhandled = Object.keys(this._params)
            .filter((key) => !this._route.parameterSegments.some(({ name }) => name === key))
            .filter((key) => key !== '_query')
            .reduce((result, current) => ({ ...result, [current]: this._params[current] }), {});

        return (
            this._route.compile(this._params) +
            stringify(
                { ...unhandled, ...this._params['_query'] },
                {
                    addQueryPrefix: true,
                    arrayFormat: 'indices',
                    encodeValuesOnly: true,
                    skipNulls: true,
                    encoder: (value, encoder) =>
                        typeof value === 'boolean' ? Number(value) : encoder(value),
                },
            )
        );
    }
Get the compiled URL string for the current route and parameters.

@example
// with 'posts.show' route 'posts/{post}'
(new Router('posts.show', 1)).toString(); // 'https://ziggy.dev/posts/1'

@return {String}