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将私有成员和受保护成员剔除?
你说对了,就是要把受保护的成员剔除掉,
官方 Issue 里有不少 Issue 是讨论这个问题,但是最终得到的结论都是「Working as Intended(预期如此)」。这里列两个 Issue 给你,有兴趣可以去翻一翻
implement Class
complains about missing #private fields · Issue #44775 · microsoft/TypeScript (github.com)要实现你想要的效果,大概得这样改:
keyof
只筛 public 的,有意思。