Kentavr16
@Kentavr16
long cold winter

Есть ли более изящные способы типизировать диапазон number?

Я хочу типизировать значения широты и долготы. С ИИ вымучил такой код:
type Latitude = number & { _latitudeBrand: never };

function isLatitude(lat: number): lat is Latitude {
  return lat >= -90 && lat <= 90;
}

const APIlist = {
  earth: {
    name: "Earth pictures by NASA",
    // latitude of picture
    lat: 0 as Latitude, // Используем тип Latitude
    setLat(newLat: number): boolean {
      if (isLatitude(newLat)) {
        this.lat = newLat as Latitude;
        return true;
      }
      return false;
    },
  },
};


Выглядит как костыль. Я начал углубляться в ТС недавно, поэтому пока испытываю трудности с кастомными валидаторами и продвинутыми типами. Буду благодарен также за любые советы, в т.ч. ссылки на интересности/книги.
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
Kentavr16
@Kentavr16 Автор вопроса
long cold winter
В общем, резюмируя переписку в комментариях - сколько-нибудь легко применимого способа такой типизации тайпскрипт на момент создания вопроса не предоставляет. Интересный (и мало того - работающий) вариант такой функциональности можно посмотреть в комментариях, спасибо Alexandroppolus за остроумную реализацию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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