🧱 Суть

URL.canParse() – это современный метод JavaScript для проверки, можно ли создать корректный URL из строки.

Он возвращает:

  • true → строка является валидным URL
  • false → строка не может быть разобрана как URL

Пример:

URL.canParse('https://example.com');
// true
 
URL.canParse('hello');
// false

📦 Проблема

1. Раньше для проверки URL использовали try/catch

Например:

function isValidUrl(value: string) {
  try {
    new URL(value);
    return true;
  } catch {
    return false;
  }
}

Проблема:

  • создание ошибок – дорогая операция
  • catch использовался как обычная проверка
  • при большом количестве невалидных строк это может влиять на производительность

2. new URL() сразу выбрасывает ошибку

new URL('hello');

Результат:

TypeError: Invalid URL

Если нужно только проверить строку – создавать исключение избыточно.

✅ Решение

Использовать:

URL.canParse()

Он выполняет проверку без создания исключений.

💻 Код

Проверка URL:

const isValid = URL.canParse('https://example.com');
 
console.log(isValid);
// true

Использование вместо try/catch:

function isValidUrl(value: string) {
  return URL.canParse(value);
}

С указанием базового URL:

URL.canParse('/profile', 'https://example.com');
// true

Потому что относительный URL становится:

https://example.com/profile

Поддержка

URL.canParse() входит в Baseline Widely Available.

Поддерживается современными браузерами с декабря 2023 года, поэтому в большинстве проектов его уже можно использовать без дополнительных проверок.

🎯 Вывод

  • URL.canParse() – быстрый способ проверить URL
  • заменяет try/catch вокруг new URL()
  • не создаёт исключения для невалидных данных
  • особенно полезен при проверке большого количества строк
  • для обычной валидации URL лучше использовать именно его

🔗 Связано