Задать вопрос
Starck43
@Starck43
Full-stack разработчик (Python, React)

Как вернуть нужный тип для возвращаемых данных у функции в зависимости от типа аргумента?

Передаю тип данных в дженерик, чтобы он вернулся как есть или вернулся массивом в зависимости от того есть аргумент в функции или нет. Почему-то всегда 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>
}
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
export function getDocuments<T>(slug: ''): Promise<T[]>;
export function getDocuments<T>(slug: string): Promise<T>;
export function getDocuments<T>(): Promise<T[]>;
export function getDocuments(slug = ''): Promise<unknown> {
	const endpoint = `/documents/${slug}`
	return getPosts(endpoint);
}


ResultType более не нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы