• typescript-接口interface


    // 对象接口类型
    interface List {
        readonly id:number;
        name: string;
        // [x:string]:any;   //字符串索引签名, 用任意字符串索引List得到任意结果
    
        age?:number;  //可选属性 可以有 可以没有
    }
    
    interface Result {
        data:List[]
    }
    
    function render(result:Result){
        result.data.forEach(value => {
            console.log(value.id, value.name);
            // value.id++;  只读属性不能赋值操作
            if(value.age){
                console.log(value.age)
            }
        })
    }
    
    let result = {
        data:[
            {id:1, name:"A", sex:'male'},  //多余的字段被允许,鸭式变形法
            {id:2,name:"B"}
        ]
    }
    
    // render(result)
    render({
        data:[
            {id:1, name:"A", sex:'male'},  //字面量参数 无法通过类型检查,除非  as类型断言 才能绕过
            {id:2,name:"B"}
        ]
    }  as Result)
    
    // -----
    
    interface  StringArray{
        [index:number]:string
    }
    let chars:StringArray = ["A","B"];
    
    interface Names {
        [x:string]:string;
        // y:number
        [z:number]:string   //这里如果设置成number是不行的, 数字类型不能赋值给string类型, 必须是子类型
    }
    
    // -----------------------
    // 函数接口类型
    let add2: (x:number,y:number) => number
    
    interface Add2 {
        (x:number, y:number):number
    }
    
    // 类型别名
    type Add3 = (x:number, y:number) => number
    
    let  add4:Add3 = (a,b) => a+b
    
    
    // 混合接口类型
    interface  Lib {
        ():void;
        version:string;
        doSometh():void;
    }
    
    let lib:Lib = (() => {})  as Lib;
    lib.version = '1.0'
    lib.doSometh = () => {}   //这样暴露一个全局的lib, 且是单例
    
    function getLib(){
        let lib:Lib = (() => {})  as Lib;
        lib.version = '1.0'
        lib.doSometh = () => {}
        return lib;
    }
    let lib1 = getLib();
    lib1();
    lib1.doSometh();
    
  • 相关阅读:
    【SICP练习】129 练习3.60
    【SICP练习】128 练习3.59
    【SICP练习】127 练习3.58
    【SICP练习】126 练习3.57
    【SICP练习】125 练习3.56
    【SICP练习】124 练习3.55
    【SICP练习】123 练习3.54
    【SICP练习】122 练习3.53
    【SICP练习】121 练习3.52
    【SICP练习】120 练习3.51
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12855457.html
Copyright © 2020-2023  润新知