Javascript 为什么要在Typescript中使用接口
有人能告诉我为什么我要在Typescript中使用接口吗?它们是什么 接口示例:Javascript 为什么要在Typescript中使用接口,javascript,typescript,Javascript,Typescript,有人能告诉我为什么我要在Typescript中使用接口吗?它们是什么 接口示例: interface Person { firstName: string; lastName: string; } class Student { fullName: string; constructor(public firstName: string, public lastName: string) { this.fullName = firstName +
interface Person {
firstName: string;
lastName: string;
}
class Student {
fullName: string;
constructor(public firstName: string, public lastName: string) {
this.fullName = firstName + " " + lastName;
}
}
function greeter(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let student = new Student("John", "Smith");
console.log(greeter(student));
输出:你好,约翰·史密斯
没有相同输出接口的示例:
class Student {
fullName: string;
constructor(firstName: string, lastName: string) {
this.fullName = firstName + " " + lastName;
}
}
function greeter(person : Student) {
return "Hello, " + person.fullName;
}
let student = new Student("John", "Smith");
console.log(greeter(student));
输出:你好,约翰·史密斯
为什么接口在这种特殊情况下有用?我发现很难理解typescript中接口的用法。非常感谢您的详细解释 接口是定义对象文字将具有的属性的非常好的方法。这非常类似于基于策略模式定义契约,typescript将根据该策略模式验证对象文本。您的代码将不会编译,因为您没有实现
Person
JS是一种松散类型的语言。因此,以下是可能的:
var a=新学生();
a、 fullName=a.firstName+“”+a.lastName
接口对于静态类型检查非常有用。也就是说,当你开发你的应用程序时,你的IDE(例如WebStorm或VS代码)可以告诉你你将尝试访问一个未定义的属性,或者你将字符串放入一个需要数字的变量中
然后,您可以在生成/传输时再次运行这些检查。所以,如果您发送这样的代码,您可以告诉它以防止发送错误代码
例如,在JavaScript中,您可以发布以下内容:
const x = {
user: {
name: 'Rajesh',
},
};
console.log(x.myUser.name);
这段代码将被发送和编译。但是如果你尝试调用它,这个脚本将崩溃,你的网站将无法工作
如果将其作为接口,IDE可能会警告您该问题。如果您将捆绑程序(例如tsc编译器)配置为不允许出现这些问题,它甚至不会让您发送错误代码,您的网站将继续工作
因此,一旦编译成JavaScript,它并不是在做技术上有用的事情,而是从build/“devops”的角度。与过梁相同,与测试相同,与文档相同。如果你没有,没关系,你的网站正在运行,但是如果你有任何一个网站,你就不太可能破坏它。查找策略模式。可能是@DanielA.White的副本,它确实为我编译,你能试试吗?@Mizlul我错过了自动初始化。注意:如果你认为上面的答案不正确/不是必需的。请在投票的同时分享你的观点。我认为这是我理解差异的好答案,谢谢@很高兴我能帮助你。解释得很好,谢谢!