首页 > 其他分享 >类型兼容性

类型兼容性

时间:2023-09-03 18:47:16浏览次数:30  
标签:兼容性 name Person printName Tom 类型 IPerson

类型兼容性

由于 UTS 语言最终会转换为 kotlin、swift 等语言,UTS 语言中的接口也更接近 kotlin 中的接口或 swift 中的协议,在类型兼容性判断时与 TS 语言的结构类型系统有着明显的区别:

  • TS:如果两个类型的内部结构相似(具有相同的属性和方法),那么它们被认为是兼容的,即使它们的名称不同。
  • UTS:依赖于类型的显式声明,必需是同一个类型或者存在显式的继承/实现关系。
interface IPerson {
    name: string
    printName(): void
}

class Person implements IPerson {
    constructor(public name: string) {}
    printName(): void {
        console.log(this.name)
    }
}

class Person1 {
    constructor(public name: string) {}
    printName(): void {
        console.log(this.name)
    }
}

type PersonObject = {
    name: string
    printName(): void
}

class Person2 extends Person {}

const person: IPerson = new Person('Tom') // 正确,Person 实现自 IPerson

const person1: Person = new Person1('Tom') // 错误,Person 与 Person1 无关只是结构相同

const person2: Person = new Person2('Tom') // 正确,Person2 继承自 Person

const person3: IPerson = {
    name: 'Tom',
    printName: function () {
        console.log(this.name)
    }
} as PersonObject // 错误,PersonObject 类型与 IPerson 无关只是结构相同

标签:兼容性,name,Person,printName,Tom,类型,IPerson
From: https://www.cnblogs.com/full-stack-linux-new/p/17675329.html

相关文章

  • java判断用户输入的数据类型
    1publicclassDemo1{2publicstaticvoidmain(String[]args){3Scannerinput=newScanner(System.in);4System.out.println("请输入一个数字:");5if(input.hasNextInt()){6intnum=input.nextInt();......
  • SAP WM 2个不同的存储类型之下可以有相同代码的Storage Bin
    SAPWM2个不同的存储类型之下可以有相同代码的StorageBinSAPWM模块里,在2个不同的存储类型之下可以有相同代码的StorageBin。这是SAP标准行为。比如如下图示,StorageBinTEST001在存储类型Z06和001下都存在。写于2023-8-24.......
  • javaee spring 依赖注入之复杂类型的注入数组 集合 等
    spring依赖注入之复杂类型的注入packagecom.test.pojo;importjava.util.List;importjava.util.Map;importjava.util.Properties;/***@description:*@projectName:testSpring*@see:com.test.pojo*@createTime:2023/8/2714:39*/publicclassAA{pri......
  • Apifox 自动导出类型 转换
     2.   json.rule.convert[java.lang.Long]=java.lang.Stringjson.rule.convert[org.bson.types.ObjectId]=java.lang.Stringjson.rule.convert[java.util.Date]=java.lang.Stringjson.rule.convert[java.sql.Timestamp]=java.lang.Stringjson.rule.convert[java.time.......
  • redis常用数据类型(转)
    转载:https://blog.csdn.net/u014453898/article/details/112292028redis有5种常用数据类型,string,list,set,zset,hash一、应用string:缓存,限流,计数器,分布式锁,分布式sessionhash:存储用户信息,用户主页访问量,组合查询list:微博关注人时间轴列表,简单队列set:赞,踩,标......
  • 开课吧前端1期.阶段1:初识ES6和ES6兼容性和新特性
    1、ECMAScript和JavaScript关系ECMA是标准,JS是实现  类似于HTML5是标准,IE10,Chrome谷歌,FireFox火狐都是实现换句话说,将来也可能有其他,XX某某Script来实现ECMA标准 ECMAScript简称ECMA或ES  目前也只有JavaScript实现,所以可以理解ECMAScript==JS目前版......
  • 10-1 以太网接口类型(Access,Trunk)抓包理解
    Access接口类型抓包理解Access的收发规则如下ACCESS接口常用来连接终用户PC,服务器,等终端设备的接口,ACCESS接口接受和发送的数据大都为没有VlanTag的Access接口接受到没有带VLANTag的数据帧加上VlanTagAccess接口如果收到带有VLANtag的数据帧,VlanTag与PVID相同则接受,不......
  • iOS开发Swift-8-类的继承,方法重写,构造器,枚举类型,可选类型,强制解包,可选绑定,隐式
    1.类的继承classAnimal{funcbreathe(){//...}}classCat:Animal{varhasHair=true}letcat=Cat()cat.breathe()cat.hasHaiclassSmallCat:Cat{funceat(){//...}}letsmallCat=SmallCat()smallCat.breathe(......
  • JavaScript—简单类型与复杂类型
    简单数据类型的内存分配简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。(简单)值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型:string,number,boolean,undefined,null。简单数据类型存放在栈里面查看代码vartimer=null;......
  • 华为交换机接口类型汇总
    接入链路和干道链路如何处理标签!   华为设备默认所有接口的缺省标签为1   只要接口配置有缺省标签,就会对标签做处理交换机链路分为干道链路和接入链路.    接入链路:一条链路一端为二层接口,另外一端为非二层接口.    干道链路:一条链路的两端均为二层接口. ......