Различия any и unknown
Оба этих типа означают, что тип переменной не определён. Но вот поведение этих типов диаметрально противоположное:
any - означает "что угодно". Поэтому и делать с переменной такого типа можно всё, что угодно

Но мы не для этого в предыдущем треде делали TS таким строгим. Видимо, команда TS думала так же и создала тип unknown
unknown - означает "не известно, что это". Поэтому делать с переменной этого типа наоборот ничего нельзя

Перед использованием unknown переменной, нужно выявить её тип. Для этого придётся писать проверки
Другими словами, unknown это другой инструмент для написания строгого кода

Для наглядности приведу пример, где any и unknown в роли возвращаемых значений


Думаю, что на вопрос когда и в каких случаях нужно использовать unknown справедливо будет ответить:
Как только вы решаете написать в коде any, напишите вместо него unknown и попробуйте сделать так, чтобы всё работало