【发布时间】:2019-02-06 15:14:58
【问题描述】:
我是打字稿的新手,遇到了实现接口的类。我知道一个类可以添加接口没有的属性,但它必须包含接口具有的所有属性。我的问题是当我从我的类中创建一个具有某种接口类型的新对象时,它会变得混乱。 我在辅导老师的网站上看到,如下代码
interface IPerson {
name: string;
display():void;
}
interface IEmployee {
empCode: number;
}
class Employee implements IPerson, IEmployee {
empCode: number;
name: string;
constructor(empcode: number, name:string) {
this.empCode = empcode;
this.name = name;
}
display(): void {
console.log("Name = " + this.name + ", Employee Code = " + this.empCode);
}
}
let per:IPerson = new Employee(100, "Bill");
per.display(); // Name = Bill, Employee Code = 100
let emp:IEmployee = new Employee(100, "Bill");
emp.display(); //Compiler Error: Property 'display' does not exist on type IEmployee'
如果在let per:IPerson = new Employee(100, "Bill"); 我会console.log(per.empCode) 之后会有一个编译器错误提示
类型“IPerson”上不存在属性“empCode”。
那么为什么 per.display() 即使类型是没有 empCode 属性的 Iperson amd 也会设法记录 empCode。请您帮我理解其中的区别
【问题讨论】:
标签: typescript class interface interface-implementation