【ts】类型断言、约束属性和方法、类的继承、类的修饰符

一、类型断言

两种写法 : 1. 值 as 类型 2. <类型>值
使用类型断言一定要谨慎,类型断言只能规避编译时候的错误;但是不能避免运行时候的错误

1.声明两个接口
// 猫
interface Icat{
    name : string 
    run() :void
}
// 鱼
interface Ifish{
    name : string 
    swim() :void
}

2。ts只允许我们访问联合数据类型的共有属性和方法;

如果不是共有的不能访问

// function isFish(animal:Icat|Ifish):boolean{
//     //   类型“Icat”上不存在属性“swim”  swim 这个地方会报错
//     if(typeof animal.swim == 'function'){
//         // 鱼
//         return true
//     }else{
//         // 
//         return false
//     }
// }

1、 (值 as 类型).属性/方法

// function isFish(animal:Icat|Ifish):boolean{
//     if(typeof (animal as Ifish ) .swim == 'function'){
//         // 鱼
//         return true
//     }else{
//         // 
//         return false
//     }
// }

2. (<类型>值).属性/方法

// function isFish(animal:Icat|Ifish):boolean{
//     if(typeof (animal).swim == 'function'){
//         // 鱼
//         return true
//     }else{
//         // 
//         return false
//     }
// }

二、约束属性和方法

// class Animal {
//     name: string
//     age:number
//     constructor(name:string,age:number){
//         this.name = name
//         this.age = age
//     }

//     run():void{
//         console.log(`${this.name}会跑`)
//     }
// }

// let a = new Animal('二哈', 1)

三、类的继承

// class Animal {
//     name: string
//     constructor(name:string){
//         this.name = name
//     }
//     run():void{
//         console.log(this.name + '会跑')
//     }
// }
// class Dog extends Animal {
//     constructor(name:string){
//         super(name)
//     }
// }
// let d = new Dog('二哈')

// console.log(d.name)
// d.run()

四、 修饰符

/**

  • 限制属性的
  • public 默认的 都能访问的
  • protected 受保护的 属性只能在 类 及其子类中能够访问;类外面不能访问
  • private 私有的 只能在当前类中使用;在子类以及类外面不能使用

*/

// class Animal {
//     private name: string
//     constructor(name:string){
//         this.name = name
//     }
//     run():void{
//         console.log(`${this.name}会跑`); 
//     }
// }
// let a = new Animal('人类')
// console.log(a.name);
// a.run()

// // 狗类继承动物类
// class Dog extends Animal {
//     constructor(name:string){
//         super(name)
//     }
//     eat():void{
//         console.log(this.name+'吃骨头');
        
//     }
// }

// let d = new Dog('二哈')
// console.log(d.name);
// d.run()

你可能感兴趣的:(TS,javascript,前端,开发语言)