【发布时间】:2016-11-30 09:25:03
【问题描述】:
所以我在没有任何 JS 经验的情况下完成了 Typescript 教程。我的问题是在给定的示例代码中,为什么可以将 Student 对象传递给以 Person 作为参数的 greeter() 函数? Student 类从不实现所述接口,所以我想知道 Typescript 类中是否自动实现接口。如果他们这样做了,这背后的原因是什么?如果 Car、Plane 和 Student 都自动实现 Person,这似乎没什么用。
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Jane", "M.", "User");
document.body.innerHTML = greeter(user);
【问题讨论】:
-
回答简短的回答:是的
-
这样做的目的是什么?所以每一堂课——f.ex。汽车、飞机、帐户——我将在此文件中声明将实现人???我也可以完全删除接口并将其包含在类中
-
您仍然必须拥有与接口声明相同的字段(相同类型)!除非您的飞机有名字和姓氏,否则它不会被视为有效人员
-
Typescript 接口是在结构上实现的,因此类只有在具有
firstName和lastName类型为string的属性时才实现Person。 -
参数名前面的
public关键字将它们变成了字段。缺少类型注释意味着它们的类型为any;any类型的字段与任何其他类型兼容。
标签: class typescript interface