typescript中接口继承类里面的私有成员和受保护成员怎么使用?

class B {
    private firstName: string = 'ceshi2';
    protected name: string;
    constructor(public email: string){
        this.email = email
    }
}

interface A extends B {
    age: number;
}

const a: A = {
    age: 1,
    email: '867',
    name: '2',
    firstName: '2'
}

请问改怎么处理这个报错?难不成用pick将私有成员和受保护成员剔除?

阅读 2.4k
2 个回答

你说对了,就是要把受保护的成员剔除掉,

官方 Issue 里有不少 Issue 是讨论这个问题,但是最终得到的结论都是「Working as Intended(预期如此)」。这里列两个 Issue 给你,有兴趣可以去翻一翻

要实现你想要的效果,大概得这样改:

interface A extends Pick<B, keyof B> {
    age: number
}

keyof 只筛 public 的,有意思。

你这个接口继承类 就应该是不对吧,接口是只有类型的,你继承类之后,你的类的数据就没用了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题