两种写法 : 1. 值 as 类型 2. <类型>值
使用类型断言一定要谨慎,类型断言只能规避编译时候的错误;但是不能避免运行时候的错误
// 猫
interface Icat{
name : string
run() :void
}
// 鱼
interface Ifish{
name : string
swim() :void
}
如果不是共有的不能访问
// function isFish(animal:Icat|Ifish):boolean{
// // 类型“Icat”上不存在属性“swim” swim 这个地方会报错
// if(typeof animal.swim == 'function'){
// // 鱼
// return true
// }else{
// //
// return false
// }
// }
// function isFish(animal:Icat|Ifish):boolean{
// if(typeof (animal as Ifish ) .swim == 'function'){
// // 鱼
// return true
// }else{
// //
// return false
// }
// }
// 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()
/**
*/
// 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()