Here is the code
class A { x = 0; y = 0; visible = false; render() { } } type RemoveProperties<T> = { readonly [P in keyof T]: T[P] extends Function ? T[P] : never//; }; var a = new A() as RemoveProperties<A> a.visible // never a.render() // ok!
I want to remove " visible / x / y " properties via RemoveProperties ,but I can only replace it with never
You can use the same trick as the Omit
type uses:
// We take the keys of P and if T[P] is a Function we type P as P (the string literal type for the key), otherwise we type it as never. // Then we index by keyof T, never will be removed from the union of types, leaving just the property keys that were not typed as never type JustMethodKeys<T> = ({[P in keyof T]: T[P] extends Function ? P : never })[keyof T]; type JustMethods<T> = Pick<T, JustMethodKeys<T>>;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With