【TS】接口:只读属性,可选属性,任意属性

接口

只读属性

实现接口后,值可以获取到,但是无法修改

    interface Demo1{
        name:string,
        age:number
    };
    let va1:Demo1={name:"ming",age:18};
    console.log(va1.name);//return ming
    va1.name="gang";
    console.log(va1.name);//return gang
    // 只读
    interface Demo2{
        readonly name:string,
        age:number
    };
    let va2:Demo2={name:"liu",age:24};
    console.log(va2.name);//return liu
    //va2.name="liu2";//无法赋值,只读

可选

实现接口时,可以选择实现,也可以选择不实现

    // 可选
    interface Demo3{
        name:string,
        age?:number
    };
    let va3:Demo3={name:"zhang",age:30};
    let vb3:Demo3={name:"peo"};
    console.log(va3.name+',va4.age: '+vb3.age);//return zhang,va4.age: undefined

任意属性

实现接口时,可以添加零个,一个或多个属性

    // 任意
    interface Demo4{
        name:string,
        [age:string]:string
    };
        // 可以添加一个任意属性
    let va4:Demo4={name:"demo4",ddd:"dff"};
    console.log(va4['ddd']);//return dff
    console.log(va4.ddd);//return dff
    console.log(va4.age);//return undefined
        // 可以添加多个任意属性
    let va5:Demo4={name:"demo4",ddd:"dff",bbb:"sss"};
    console.log(va5.bbb);//return sss
        // 可以添加0个任意属性
    let va6:Demo4={name:"demo4"};
    console.log(va6.name);//return  demo4
posted @ 2021-09-01 23:06  wl夏白  阅读(384)  评论(0)    收藏  举报