Я хочу определить сопоставленный тип, который исключает get
функции из сопоставляемого типа, однако, методы получения эквивалентны readonly
свойствам в их сигнатуре типа, поэтому лучшее, что я могу придумать, это:
type IfEquals<X, Y, A, B> =
(<T>() => T extends X ? 1 : 2) extends
(<T>() => T extends Y ? 1 : 2) ? A : B;
type WithoutGetters<T> = {
[P in keyof T]: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P>
};
Однако это также исключает обычные readonly
свойства, которые я хочу хочу включить.Можно ли исключить только функции get
, а не остальные свойства readonly
?