class 对象的类型是什么,其中 class 实现了一个接口并拥有自己的新成员
what will be the type of class object where the class implements an interface and also has it own new members
我是 OOP 和打字稿的新手,所以这里是示例代码
interface Company{
compName:string;
compId: number;
compAdree:string;
}
class Employee implements Company{
compName="fb";
compId=83487;
compAdree="NY";
emp_name="peter";
emp_id=99348493;
emp_adr="Ny"
}
所以在上面的代码中 class Employee is implementing interface company class 有一些不在接口中的新成员所以如果我创建一个对象 class Employee what将是对象的类型?
我遇到过一些代码,其中它是 class 类型,在一些代码中它是接口类型。所以我很困惑该用哪个
会不会
let emp:Employee = new Employee()
还是会
let emp:Company = new Employee()
您可以将 Company
视为超类型,将 Employee
视为子类型。这意味着 Employee
可分配给 Company
。
考虑这个例子:
interface Company {
compName: string;
compId: number;
compAdree: string;
}
class Employee implements Company {
compName: "fb";
compId: 83487;
compAdree: "NY";
emp_name: "peter";
emp_id: 99348493;
emp_adr: "Ny"
}
declare let company: Company;
declare let employee: Employee;
company = employee // ok
反之则不然:
employee=company // error
让我们回到最初的例子。
这一行:
let emp:Employee = new Employee()
emp.compName // ok
emp.emp_adr // ok
意味着 emp
可以使用 Company
和 Employee
的所有属性,而这一行:
let comp: Company = new Employee()
comp.compName // ok
comp.emp_adr // error
意味着 comp
只允许使用 Company
属性,尽管它在运行时也包含 Employee
属性。相当于静态限制。
您可能还注意到 Employee
是一个 class,它同时用于运行时和类型范围。这是一个特殊的 属性 打字稿 classes 和枚举。它们都可能在两个范围内使用。
我是 OOP 和打字稿的新手,所以这里是示例代码
interface Company{
compName:string;
compId: number;
compAdree:string;
}
class Employee implements Company{
compName="fb";
compId=83487;
compAdree="NY";
emp_name="peter";
emp_id=99348493;
emp_adr="Ny"
}
所以在上面的代码中 class Employee is implementing interface company class 有一些不在接口中的新成员所以如果我创建一个对象 class Employee what将是对象的类型?
我遇到过一些代码,其中它是 class 类型,在一些代码中它是接口类型。所以我很困惑该用哪个
会不会
let emp:Employee = new Employee()
还是会
let emp:Company = new Employee()
您可以将 Company
视为超类型,将 Employee
视为子类型。这意味着 Employee
可分配给 Company
。
考虑这个例子:
interface Company {
compName: string;
compId: number;
compAdree: string;
}
class Employee implements Company {
compName: "fb";
compId: 83487;
compAdree: "NY";
emp_name: "peter";
emp_id: 99348493;
emp_adr: "Ny"
}
declare let company: Company;
declare let employee: Employee;
company = employee // ok
反之则不然:
employee=company // error
让我们回到最初的例子。 这一行:
let emp:Employee = new Employee()
emp.compName // ok
emp.emp_adr // ok
意味着 emp
可以使用 Company
和 Employee
的所有属性,而这一行:
let comp: Company = new Employee()
comp.compName // ok
comp.emp_adr // error
意味着 comp
只允许使用 Company
属性,尽管它在运行时也包含 Employee
属性。相当于静态限制。
您可能还注意到 Employee
是一个 class,它同时用于运行时和类型范围。这是一个特殊的 属性 打字稿 classes 和枚举。它们都可能在两个范围内使用。