Можно ли отфильтровать геттеры, используя сопоставленные типы в машинописи? - PullRequest
0 голосов
/ 04 марта 2019

Я хочу определить сопоставленный тип, который исключает 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?

...