Обычно тип typeguard определяется как таковой:
(value: unknown) => value is Type
Где выделенная часть называется предикатом типа документацией :
(value: unknown) => **value is Type**
Забегая вперед, мы могли бы сказать (я не знаю, как, если даже в документации это определяется), что value
- это параметр typeguard , is
- это Двоичный код TypeScript оператор / ключевое слово для определения предикатов типа и Type
- тип, который фактически гарантирует typeguard, гарантированный тип . Поскольку мы используем typeguards, чтобы гарантировать тип значения, мы могли бы сказать, что Type
- самая интересная часть определения.
В силу этого возможно ли извлечь Type
из определения типа typeguard ? Как?
Я думаю о чем-то вроде:
type Type = typeof typeguard; // (value: unknown) => value is Type
type TypePredicate = TypePredicateOf<Type>; // value is Type
type GuaranteedType = IsOf<TypePredicate>; // Type
Где GuaranteedType
- желаемый результат.
Погуглил, у меня только нашел ответы по поводу определений типов generi c typeguards , но не понял, как получить из него часть Type
.