版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/themagickeyjianan/article/details/87895880
/**
* 接口的本质是一种规范和限制
* 1.接口里面我们声明动作和属性,并不包括实现的部分
*/
interface DoSomething {
shopping(n: number): string;
eating(n: number): string;
}
class Stduent implements DoSomething {
shopping(n: number): string {
return "ok";
}
public eating(n: number): string {
return "";
}
}
/**
* 接口对函数的约定, 这种约束可以对多个函数约束,是批量的
*/
interface myFunc {
(n: string, a: number): boolean;
}
let fun1: myFunc;
fun1 = function (n: string, a: number): boolean {
return true;
}
// 对单个函数的声明
let fun2: (n: string, a: number) => boolean = function (n: string, a: number): boolean {
return true;
}
/**
* 接口对数组的约束
*/
interface StringArr {
// 下标是index-->里面元素是 字符串
[index: number]: string;
}
let arr1: StringArr;
arr1 = ["aaa", "bbb"];
/**
* 接口对json的约束
* 1.接口的字段必须全有
* 2.可以多一些字段
*/
interface JData {
name: string,
age: number,
addr?: string, // 加入可选参数,让这些字段可选
sex?: string
}
function jM(n: JData) {
console.log(JSON.stringify(n));
}
let jd = {name: "jn", age: 26, addr: "bj"};
jM(jd);
/**
* 规范多个类的动作
*/
interface ValidateData {
checkData(d: any): boolean;
}
class StringValidate implements ValidateData {
checkData(d: any): boolean {
if(d && typeof d == "string"){
return true;
}else{
return false;
}
}
}
class NumberValidate implements ValidateData {
checkData(d: any): boolean {
if(d && typeof d == "number"){
return true;
}else{
return false;
}
}
}
let dara = "jn";
let checkString = new StringValidate();
console.log(checkString.checkData("jn"));
let checkNum = new NumberValidate();
console.log(checkNum.checkData("jn"));