Зачем в TS придумали выражения as и as keyof typeof?
Их используют для запросов по апи, когда в теории понятен тип данных, но на практике тайпскрипт не может этого проверить в реальности?
У меня был пример с кодом
import { blogPosts } from "data/data-blog-posts" (данные взяты статично для тестирования без апи)
Мои типы
type Posts = {
[key: string]: Post
}
type Post = {
header: string;
page: Element[]
}
type Element = {
tag: string;
image_src?: string;
image_alt?: string;
text?: string;
}
Мое первое решение
const posts: Posts = blogPosts
const data: Post = posts[params.name]
Предложенное второе решение (но тут как будто бы и не важно типизируем мы эти данные или нет)
const data = blogPosts[params.name as keyof typeof blogPosts]
Есть еще и третье решение, но здесь, как мне показалось, мы не используем тайп скрипт для удобства, а усложняем себе жизнь
const isPosts = (posts: unknown): posts is Posts => !!posts
&& typeof posts === 'object'
if (!isPosts(blogPosts)) throw new Error('wrong blogPosts');
const data = blogPosts[props.name]
Посмотрев все решения, мне зашел только первый (из-за его простоты и понятности + это реально удобно)
Поделитесь пожалуйста своим мнением по этим трем вариантам, возможно я просто плохо знаю ТС и поэтому так рассуждаю