小编Wan*_*ang的帖子

如何在TypeScript中通过映射类型删除属性

这是代码

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替换它

typescript typescript-typings mapped-types

9
推荐指数
2
解决办法
2348
查看次数

如何通过TypeScript中的映射类型删除属性和实现方法

这是代码

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)

typescript typescript-typings mapped-types

3
推荐指数
1
解决办法
486
查看次数