使用接口强制执行类型
Typescript 的核心优势之一是它可以强制执行你传递代码的值的数据类型,以帮助防止出错。
假设你正在制作宠物约会应用程序。
你有这个简单的功能,检查两只宠物是否相互兼容……
checkCompatible(petOne, petTwo) {
if (petOne.species === petTwo.species &&
Math.abs(petOne.age - petTwo.age) <= 5) {
return true;
}
}
这是完全功能性的代码,但对于某人,特别是那些没有编写此功能的应用程序的人来说,他们应该不知道他们应该通过物种和年龄来传递对象,这太容易了。属性。他们可能会错误地尝试 checkCompatible(petOne.species, petTwo.species)
然后留下来找出函数试图访问 petOne.species.species 或 petOne.species.age 时抛出的错误!
我们可以防止这种情况发生的一种方法是在 pet 参数上指定我们想要的属性:
checkCompatible(petOne: {species: string, age: number}, petTwo: {species: string, age: number}) {
//...
}
在这种情况下,Typescript 将确保传递给函数的所有内容都具有种类和年龄属性(如果它们具有其他属性,则可以),但这是一个笨拙的解决方案,即使只指定了两个属性。有了接口,有更好的方法!
首先我们定义我们的界面:
interface Pet {
species: string;
age: number;
//We can add more properties if we choose.
}
现在我们所要做的就是将参数的类型指定为我们的新界面,就像这样……
checkCompatible(petOne: Pet, petTwo: Pet) {
//...
}
…和 Typescript 将确保传递给我们函数的参数包含 Pet 接口中指定的属性!