我想定义一个映射类型,该类型从被映射的类型中排除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
属性?