Олег, ну ты ппц... Зачем ты лезешь в следствие, когда тебе надо разобраться с причиной? Я тебе выше про что писал? Про isHomePage. А ты мне что показываешь? И во что сам лезешь? Лезешь туда, куда передается эта переменная. Ты с этой переменной разобрался? Я что выше написал?
Ты что, из моей репы только часть кода страницы выдернул, а остальное свое оставил? В чем логика? Еще раз: ТС ругается на ошибку типа не там, где ты сделал ошибку при объявлении типа и переменной, а там, где ты пытаешься передать что-то, что не соответствует ожидаемому. То есть у тебя написано:

const isHomePage = useMemo(() => { router.pathname === '/' }, [router.pathname])

Какой тут тип у isHomePage? Такой, какой ей и был присвоен результатом выполнения функции. В данном случае никакой, потому что ты не выполнил никакого возврата. А откуда ТС знает, что ты хотел какой-то другой тип? Ты же ему никак не сказал об этом. Вот если бы ты написал
const isHomePage: boolean = useMemo(() => { router.pathname === '/' }, [router.pathname])
Вот тогда бы он тебе уже здесь сказал "Ожидается boolean, а получаем ничего (void)". Но ты же здесь этого не написал? Поэтому ТС и молчит тут. А вот дальше, когда ты пытаешься эту переменную передать куда-то, где четко сказано "жду переменную с типом boolean", то тут и возникает ошибка, потому что передаешь void вместо boolean.

Я понимаю почему ты ошибся с функцией. У меня-то написано
const isHomePage = useMemo(() => router.pathname === '/', [router.pathname])
Тут тоже нет слова return. Но это совсем не то же самое, что у тебя. У тебя-то тело функции обернуто в фигурные скобки, то есть буквально
const isHomePage = useMemo(() => { router.pathname === '/' }, [router.pathname])
Здесь большая разница. Когда, как у меня, в скобки не взято, тогда написанное воспринимается сутью возврата, то есть у меня по сути выполняется
const isHomePage = useMemo(() => { return router.pathname === '/';}, [router.pathname])
Просто в сокращенном виде. А у тебя фигурные скобки, но нет return.