如何将类型转换为typescript中的类?

如何将类型转换为typescript中的类?,typescript,Typescript,我有一个classClient,我想创建一个新的classUpdateClient,但省略classClient的几个属性 class Client { constructor() { this.clients = ''; this.client_secret = ''; } clients: string; client_secret: string; } 我希望类UpdateClient像这样 class UpdateClie

我有一个class
Client
,我想创建一个新的class
UpdateClient
,但省略class
Client
的几个属性

class Client {
    constructor() {
        this.clients = '';
        this.client_secret = '';
    }
    clients: string;
    client_secret: string;
}
我希望类
UpdateClient
像这样

class UpdateClient {
    constructor() {
        this.clients = '';
    }
    clients: string;
}
现在,我确信在vanilla JS中有几种方法可以完成任务,比如迭代类
客户机
的所有可枚举属性,但我不想这样做

我想要一个特定于typescript的解决方案。我找到了
ommit
type实用程序,它按预期工作。然而,有一个小问题我无法解决

这是完整的代码片段

class Client {
    constructor() {
        this.clients = '';
        this.client_secret = '';
    }
    clients: string;
    client_secret: string;
}

type T = Omit<Client, 'client_secret'>
类客户端{
构造函数(){
这是。客户=“”;
this.client_secret='';
}
客户端:字符串;
客户端密码:字符串;
}
类型T=省略
我要的是打字而不是上课。我想以某种方式将此类型
T
转换为类
UpdateClient
,并将其导出。导出的属性必须是类,因为使用此属性的其他模块需要类


我正在使用typescript
v3.7.5

如果您只想让
UpdateClient
成为一个类构造函数,使
的实例省略
,您可以这样编写:

const UpdateClient: new () => Omit<Client, 'client_secret'> = Client;

不管怎么说,这样就行了:

const c = new UpdateClient();
c.clients; // okay
c.client_secret; // error at compile time, although it does exist at runtime
请注意,即使编译器不知道
UpdateClient
的实例具有
client\u secret
属性,但它在运行时仍然只是
client
的实例,因此该属性在运行时肯定存在。如果这是一个问题,你可能应该做一些完全不同的事情。但是既然你说省略对你有用,我想这不是问题


好吧,希望这会有帮助;祝你好运

const c = new UpdateClient();
c.clients; // okay
c.client_secret; // error at compile time, although it does exist at runtime