Давайте создадим два фиктивных класса и пример кода:
class A {
constructor() {}
}
class B extends A {
value: number;
constructor(value: number) {
super();
this.value = value;
}
}
const values: A[] = [new A(), new A(), new B(123)];
const oneOfThem = values[2];
validateB(oneOfThem);
console.log(oneOfThem.value);
function validateB(item: A): asserts item is B {
if (!(item instanceof B)) {
throw new Error('wrong type!');
}
}
Этот код работает отлично.
Дело в том, что мне нужно обернуть validateB
другой функцией:
function validateBWrapper(item: A) {
return validateB(item);
}
Но как только я использую эту функцию вместо validateB
в приведенном выше коде, она теряет информацию asserts ...
:
Я не хочу копировать asserts item is B
в функцию-оболочку. В моем фактическом использовании функция-оболочка оборачивает функцию, которая получает параметр.
Я пытаюсь найти что-то похожее на ReturnType<>
, но с asserts
.
Есть ли способ получить asserts
информацию из данной функции?
Спасибо!
Площадка