为什么打字稿在界面中不支持私有成员?
如何处理以下情况?
interface IFoo
{
private member: {};
}
class Foo implements IFoo
{
private member = {};
}
答案 0 :(得分:2)
接口定义了“公共合同”,它描述了类的公共方面,因此拥有私有访问修饰符就没有意义。
From Typescript interface documentation:
这禁止您使用它们来检查班级是否也有 类实例的私有方面的特定类型。
但是接口可以使用私有成员扩展类。
在TypeScript中,接口也可以扩展类,但只能以某种方式 涉及继承。当接口扩展类时, 界面包括所有类成员(公共和私有),但没有 课程的实现。
class Customer
{
private id: number;
get Id(): number
{
return this.id
}
set Id( value: number )
{
this.id = value;
}
}
interface ICustomer extends Customer
{
MiddleName: string;
}