Передаю тип данных в дженерик, чтобы он вернулся как есть или вернулся массивом в зависимости от того есть аргумент в функции или нет. Почему-то всегда IDE показывает один тип данных для разных вариантов применения функции. Не могу увидеть причину такого поведения. Может кто подскажет?
const posts = await getDocuments<PostType>() // --> PostType[]
const posts = await getDocuments<PostType>('slug') // --> PostType[]
Вот сам код:
type ResultType<T, P extends string | undefined> = Promise<T extends string ? T : T[]>
export async function getDocuments<T, P extends string | undefined>(slug?: P): ResultType<T, P> {
const endpoint = `/documents/${slug}`
return await getPosts(endpoint) as ResultType<T, P>
}