这是代码
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!
Run Code Online (Sandbox Code Playgroud)
我想通过RemoveProperties删除"visible/x/y"属性,但我只能用never替换它
这是代码
class A {
x = 0;
y = 0;
visible = false;
render() {
return 1;
}
}
type RemoveProperties<T> = {
readonly [P in keyof T]: T[P] extends Function ? T[P] : never//;
};
type JustMethodKeys<T> = ({ [P in keyof T]: T[P] extends Function ? P : never })[keyof T];
type JustMethods<T> = Pick<T, JustMethodKeys<T>>;
type IsValidArg<T> = T extends object ? keyof T extends never ? false : true : true;
type Promisified<T extends Function> = …Run Code Online (Sandbox Code Playgroud)