zoukankan      html  css  js  c++  java
  • ts类型兼容性

      
        ts的类型兼容性是基于结构类型的。 结构类型是一种只使用其成员来描述类型的方式。(大白话:看属性兼容) 
        如果传入的变量A和声明的类型B不匹配,ts会进行兼容性检查
        只要用户传入变量A中的属性>=在源类型B要求的属性,那么认为就是兼容的
     //接口的兼容性
      interface Animal {
        name: string
        age: number
      }
      interface Person {
        name: string
        age: number
        gender: string
      }
      interface IGetNameFunc {
        (animal: Animal): string //注意这里要求传入的是Animal类型对象
      }
      const getName: IGetNameFunc = animal => animal.name
    
      const p: Person = { name: 'zs', age: 12, gender: 'male' }
      const dog0: Animal = p //Animal实例居然可以等于p实例对象 这个也是ts兼容性检查
      const dog: Animal = { name: 'xiaoHui', age: 1 }
    
      getName(dog) //传入Animal实例对象dog是很正常的
      getName(p) //传入Person实例对象p居然也是可以的。这里就是ts兼容性检查 只要p包含name、age属性就是可以的
     interface INamed {
        name: string
      }
      class Person {
        name: string
      }
      let p = <INamed>{} //按照接口定义一个变量p
      p = new Person()  //p可以去当Person类实例对象 这里也是ts兼容性检查。只要Person类包含name实例就可以赋值给p
      console.log(p);
    
      let p1 = { name: 'Alice', age: 10 }
      p = p1  //这也是ts兼容性检查 只要p1对象里面又name属性就可以赋值给P
      console.log(p);
  • 相关阅读:
    求js数组中最小值
    分析apply,call方法
    前端模块化详解
    js中形参的小练习
    js中return返回值小练习
    mysql 视图
    mysql 数据库语句
    mysql 事务管理
    vue-前端工程化
    Vue-router
  • 原文地址:https://www.cnblogs.com/xiaoliziaaa/p/14991222.html
Copyright © 2011-2022 走看看