当前位置: 首页 > news >正文

【前端vue3】TypeScrip-interface(接口)和对象类型

对象类型

定义对象需要用到interface(接口),主要用来约束数据的类型满足格式

定义方式如下:

interface Person {name: string;age: number;
}

如对象中与接口中的属性不一致会报错,必须保持一致
例如如下:

interface Person {name: string;age: number;
}const person: Person = {name:"小C学安全"
}
//会提示类型 "{ name: string; }" 中缺少属性 "age",但类型 "Person" 中需要该属性。ts(2741)

接口的重合和继承

重合interface,可以合并两个相同对象名的属性
例如:

interface Person {name: string;
}
interface Person {age: number;
}
const person: Person = {name:"小C学安全",age: 20
}

继承interface,例如对象A可以继承对象B的属性
例如:

interface PersonA {name: string;
}
interface PersonB extends PersonA {age: number;
}
const person: PersonB = {name:"小C学安全",age: 20
}

可选属性

可选属性就是该属性是可以不存在的
例如:

interface PersonA {name: string;age?: number;
}const person: PersonA = {name:"小C学安全",
}
//这样写是不会报错的也可以这么写
interface PersonA {name: string;age?: number;}const person: PersonA = {name:"小C学安全",age: 20
}

任意属性

定义方式: [propName: string]

interface PersonA {name: string;age?: number; //定义可选属性[propName: string]:any; //定义任意属性}const person: PersonA = {name:"小C学安全",age: 20,city: "北京"
}

以上代码中,PersonA并没有定义属性city,但是代码没有报错,是因为我们定义了任意属性

只读属性

只读属性是只能读取,但是不允许被赋值修改的
定义方式:在属性前加上readonly
例如:

interface PersonA {readonly name: string;age?: number; //定义可选属性[propName: string]:any; //定义任意属性}const person: PersonA = {name:"小C学安全",age: 20,city: "北京"
}person.name= "小白"

以上代码就会报错,会提示:

无法为“name”赋值,因为它是只读属性。ts(2540)

添加函数

可以给对象属性添加函数
例如:

interface PersonA {readonly name: string;age?: number; //定义可选属性[propName: string]:any; //定义任意属性test : ()=>void; // 定义函数
}const person: PersonA = {name:"小C学安全",age: 20,city: "北京",test: ()=>{console.log("定义函数成功")}
}person.test()

在这里插入图片描述

http://www.lryc.cn/news/378437.html

相关文章:

  • 神经网络 torch.nn---nn.RNN()
  • RocketMQ-记一次生产者发送消息存在超时异常
  • ls命令的参数选项
  • 网络安全:Web 安全 面试题.(文件上传漏洞)
  • 智源联合多所高校推出首个多任务长视频评测基准MLVU
  • Linux系统:线程概念 线程控制
  • LearnOpenGL - Android OpenGL ES 3.0 绘制纹理
  • 山东济南最出名的起名大师颜廷利:二十一世纪哲学的领航者
  • Nginx 负载均衡实现上游服务健康检查
  • 小程序使用接口wx.getLocation配置
  • Protobuf安装配置--附带每一步截图
  • 力扣1019.链表中的下一个更大节点
  • 查询mysql库表的几个语句
  • 【CT】LeetCode手撕—103. 二叉树的锯齿形层序遍历
  • 1958springboot VUE宿舍管理系统开发mysql数据库web结构java编程计算机网页源码maven项目
  • LVS DR模式
  • myslql事务示例
  • 解决Flutter应用程序的兼容性问题
  • 整合微信支付一篇就够了
  • 视创云展为企业虚拟展厅搭建,提供哪些功能?
  • c++ 常用的锁及用法介绍和示例
  • PostgreSQL源码分析——口令认证
  • Stability-AI(图片生成视频)
  • Linux机器通过Docker-Compose安装Jenkins发送Allure报告
  • 基于Gunicorn+Flask+Docker模型高并发部署
  • java:类型变量(TypeVariable)解析--基于TypeResolver实现将类型变量替换为实际类型
  • ru俄罗斯域名如何申请SSL证书?
  • python实现购物车的功能
  • 日元预计明年开始上涨
  • 8、PHP 实现二进制中1的个数、数值的整数次方