Kozack
@Kozack
Thinking about a11y

Как правильно прописать типы для такой функции?

На JS написана вот такая функция:
/**
 * @param {URL | string} url
 * @param {boolean} returnAsURL
 * @return {URL | string}
 */
function clearURL (url, returnAsURL = url instanceof URL) {
  url = new URL(url)

  // ...

  return returnAsURL ? url : url.toString()
}

Как описать функцию в .d.ts файле, чтобы VS Code однозначно понимал какой тип данных будет возвращён?
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Помогут перегрузки (overloads). Что-то вроде этого:
export function clearURL (url: URL): URL;
export function clearURL (url: string): string;
export function clearURL (url: URL | string, returnAsURL: true): URL;
export function clearURL (url: URL | string, returnAsURL: false): string;
export function clearURL (url: URL | string, returnAsURL: boolean): URL | string;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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