是否可以使用打字稿中的映射类型过滤出吸气剂?

时间:2019-03-04 08:18:47

标签: typescript get getter mapped-types conditional-types

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

0 个答案:

没有答案