ts中接口的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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"));

猜你喜欢

转载自blog.csdn.net/themagickeyjianan/article/details/87895880