zoukankan      html  css  js  c++  java
  • 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();
    
  • 相关阅读:
    最短路径之spfa
    最短路径之Bellman-Ford——解决负权边
    最短路径之Floyd-Warshall算法
    图上最短路径问题
    它们其实都是图(二分图)
    记忆化结果再利用 进一步探讨递推关系
    leetcode 376. 摆动序列 java
    leetcode 368. 最大整除子集 java
    leetcode 96. 不同的二叉搜索树 java
    leetcode 454. 四数相加 II java
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12855457.html
Copyright © 2011-2022 走看看