Kozack
@Kozack
Thinking about a11y

Как написать функцию которая возвращает класс в зависимости от параметра?

Есть набор классов.

class TimeoutTextValidator {
  public static type = 'timeout-text' as const
  public schema = {timeout: 1}
}

 class ImageValidator {
  public static type = 'image' as const
  public schema = {src: ''}
}


У всех есть статическое уникальное поле type.

Хочу написать функцию, которая бы по переданному типу возвращала нужный класс:
export function getValidatorByType(type) {
  switch (type) {
    case 'timeout-text':
      return TimeoutTextValidator
    case 'image':
      return ImageValidator
    default:
      return assertUnreachable(type)
  }
}

function assertUnreachable(_: never): never {
  throw new Error("Didn't expect to get here");
}


Проблема в типах. Не могу понять, как заставить ТС корректно выводить возвращаемый тип в зависимости от переданного аргумента.

Мои попытки в playground
  • Вопрос задан
  • 64 просмотра
Решения вопроса 2
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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