В поисках обходного пути для # 38115 , чтобы иметь возможность сообщать компилятору о добавленных свойствах stati c и экземплярах с помощью вызовов defineProperty () или декораторов, и придумали следующий код. Однако мне не нравится идея передачи второго параметра TType
. Есть ли способ, как работать с типом экземпляра и самим типом из одного параметра в определении типа?
type Props = {
p1: number
p2: number
}
type StaticProps = {
s: number
}
type ExtraPropType<T, TType> = (new (...args: any[]) => T & Props) & TType & StaticProps;
class BaseClass {}
const ExtendedClass = BaseClass as ExtraPropType<BaseClass, typeof BaseClass>;
ExtendedClass.s; // ok
const extendedInst = new ExtendedClass();
extendedInst.p1; // ok
extendedInst.p2; // ok
Playground Link
Я, очевидно, открыть для другого решения предложения для TS, не распознающие свойства, добавленные с помощью Object.defineProperty()
звонки # 38115 .
Мне также было любопытно, почему вы не можете использовать Типы утилит для дженерики.