接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。 -----来源:官方文档
个人理解
我的理解:接口就是一个自定义的类型
一个示例🌰: 求一个数的平方
function sqr(num: number) {
console.log(num*num);
}
sqr(3) // 9
sqr("no") // 报错:Argument of type '"no"' is not assignable to parameter of type 'number'
这时候编辑器规范这个参数类型,类型就是后面的number
下方的官方代码🌰
interface LabelledValue {
label: string;
}
function printLabel(labelledObj: LabelledValue) {
console.log(labelledObj.label);
}
let myObj = { size: 10, label: "Size 10 Object" };
printLabel(myObj);
这时候就当作labelledObj的参数类型为LabelledValue。👀
LabelledValue有一定的规范,也就是其中有个参数是label,并且是string类型,那么我们定义这个参数的时候就要符合这个接口的规范。要有这个属性,并且它的类型为string。
(多了没事,比如官方示例中多了个size)
但是我这样写编辑器会报错,但是可以编译通过(是不是我的ts版本原因?(Version 3.5.3)😏)
printLabel({ size: 10, label: "Size 10 Object" });
代码截图(可以编译通过但是有个参数报红)
代码截图提示警告信息
提示警告信息所以尽管可以编译通过,我还是会使得参数和接口的里面的参数及类型保持一致✔
PS:
找到原因了:这样写跳过了检查。官方截图
网友评论