【TS】object类型
object是一个对象,在ts中定义对象类型的语法为:let 变量名 :object = { }
在object类型中,对象内部定义的值是不受类型约束的,只要是一个object类型即可,例如:
let obj : object = {
name : '艺术概论', // 字符串
price : 999 // 数字
}
console.log(obj); // {name: '艺术概论', price: 999}
object 类型在函数中的使用
// 定义一个函数,参数是object类型,返回值也是object类型
function getObj (obj:object) : object {
console.log(obj);
return {
name : '东方不败',
age : 100
}
}
定义object类型,传入的值必须是object类型,否则会报错
console.log(getObj({name : '孙悟空',age : 1000})); // 正确
// console.log(getObj(123)); // 错误的
某些方法本质是一个对象,所以也可以传入,比如 new String
console.log(getObj(new String('艺术概论'))); // 正确
打印 console.log(new String) 的话可以看到 string是一个对象

new String为什么是一个对象?
通常定义字符串的方法有这些
let str = '东方不败' // 字符串
let str2 = String('东方不败') // 字符串
let str3 = new String('东方不败') // 对象 String{}
前两种方法是基础类型的,str为直接定义基础字符串类型,str2为String方法转换值为字符串,本质还是一个基础类型字符串,str3则为对象,为了验证结果,对这几个变量进行类型检测
// 检测类型
console.log(typeof str); // string
console.log(typeof str2); // string
console.log(typeof str3); // object

对象类型是可以直接 obj.xxx = xxx 来新增属性的
// str.name = '东方求败' // 报错 字符串无法 .name
// str2.name = '东方求败' // 报错 字符串无法 .name
str3.name = '东方求败' // 成功
str3打印的结果

js中变量存储有两种方式
1、基础类型存储 : String , Boolean , Number , Undefined , Null
2、引用类型存储 : Object(Array,Date,RegExp,Function)
js的定义的变量都是保存在堆和栈中的- 基础类型保存在栈内存中,值与值之间独立存在,互补干扰,因此不存在修改了一个变量导致原始变量值发生改变的问题。
- 对象类型保存在堆中,创建对象会在堆内存中开辟一个新空间,变量保存的是对象的内存地址,而不是保存的值,也就是栈(变量)中存的是堆的指针,如果两个变量保存的是同一个地址,那么他们的指针指向的是同一个,所以通过
a变量修改属性时,b变量也会受到影响。 - 两个基础类型的数据比较时,比较的是值。
- 两个引用类型的数据比较时,比较的是内存地址,如果两个变量一模一样,但是内存地址不同,也会返回
false。
在此处str3中,new String() 实际上是创建了一个新的对象,将值存到了实例对象的堆中,所以我们可以给str3添加属性。
案例源码:https://gitee.com/wang_fan_w/ts-seminar
如果觉得这篇文章对你有帮助,欢迎点亮star
【TS】object类型的更多相关文章
- 【长文详解】TypeScript、Babel、webpack以及IDE对TS的类型检查
只要接触过ts的前端同学都能回答出ts是js超集,它具备静态类型分析,能够根据类型在静态代码的解析过程中对ts代码进行类型检查,从而在保证类型的一致性.那,现在让你对你的webpack项目(其实任意类 ...
- 自学 TypeScript 第一天 环境开发配置 及 TS 基本类型声明
前言: 自学第一天,什么是TS ,为什么要用 TS TS 全程 Typed JavaScript at Any Scale 解释起来就是 添加了类型系统的 JavaScript, 是 JavaScr ...
- JS高程5.引用类型(1)Object类型
引用类型 在ECMASCript中,引用类型是一种数据结构,将数据和功能组织在一起,引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法.(注意:尽管ECMAScript从技术上 ...
- 5.1 JS中Object类型
1.Object类型是引用类型中的一种. 2.创建Object实例(对象)的方式: 方式1:使用new操作符,后面跟上Object构造函数.如: var obj = new Object();//创建 ...
- Object类型与Array类型
总结--JS中的引用类型: Object类型,Array类型,Boolean类型,Number类型,String类型,Date类型, Function类型,RegExp类型,单体内置对象(Global ...
- Object类型
Object类型 我们看到的大多数引用类型值都是Object类型的实例,虽然Object类型不具备多少功能,但是在储存和传输数据上的确是不错的选择. 2.对象字面量表示法 调用Object构造函数: ...
- JavaScript引用类型之Object类型
在JavaScript中大多数的引用类型都是Object的实例,Object类型也是使用最多的类型! 创建Object类型实例的方式有两种,下面分别来分析一下: (1)第一种是使用new操作符后跟Ob ...
- 引用类型之object类型
object类型有两种创建方法,第一种是直接创建法: var person=new Object(); person.name = "Nicholas"; person.age = ...
- 从头开始学JavaScript (十一)——Object类型
原文:从头开始学JavaScript (十一)--Object类型 一.object类型 一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值). object对于在应 ...
- 《JavaScript高级程序设计》读书笔记 ---Object 类型
引用类型的值(对象)是引用类型的一个实例.在ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管ECMAScript从技术上讲是一门面 ...
随机推荐
- PHY驱动调试之 ---PHY设备驱动(三)
1. 前言 内核版本:linux 4.9.225,以freescale为例.(部分内容待修改和补充,不一定准确) 2. 概述 上一篇文章讲了控制器的驱动使用的是platform总线的连接方式,本节要讲 ...
- java 常用的jar包下载地址
Eclipse: http://www.eclipse.org/downloads/packages/all Spring: http://Framework: http://repo.spring. ...
- ThinkPHP6.0在phpstorm添加查询构造器和模型的代码提示
ThinkPHP6.0升级后 使用查询构造器和模型都没有了提示 原因是tp6源码中没有添加注释 找到Model.php * @method Query where(mixed $field, stri ...
- form表单里的button 等元素不能使用margin: 0 auto;
记得把form和button都设为display:block; 就能用margin: 0 auto;水平居中了
- 电脑无法自动获取ip地址
1.按下win+r,输入cmd,打开命令提示符;2.执行ipconfig命令看下能否获取到ip地址:3.若不能,执行ipconfig /renew命令重新获取ip:4.执行ipconfig命令看下能否 ...
- 基于Hexo搭建静态博客
关于静态博客 通常来讲,建立个人博客有2种方式: 第一,直接在第三方博客平台注册博客空间,如:博客园,简书,CSDN等,这种方式建立的博客,所有数据都存放在博客平台. 第二,自建博客系统,这种方式就是 ...
- (9)go-micro微服务Redis配置
目录 一 go-redis介绍 二 go-redis安装 三 redis初始化连接 四 存储mail邮件 五 存储token 六 最后 一 go-redis介绍 Redis(Remote Dictio ...
- 树形 dp 与树上问题
NFLS 集训笔记 20220802 - 树形 dp 进阶与树上问题综合 \(\text{By DaiRuiChen007}\) I. 洛谷[P2585] - 三色二叉树 \(\text{Link}\ ...
- ios网络协议从http变成https
最近发了一个很蛋疼的事,iphone16.x以后的系统浏览器自动将http请求切换为https请求了 工程自测 1.在ihone14 pro max,iOS16.1的手机上用http请求是失败的,在i ...
- 洛谷P1496 火烧赤壁【题解】
事先声明 本题解文字比较多,较为详细,算法为离散化和差分,如会的大佬可以移步去别处看这道题的思路(因为作者比较懒,不想新开两个专题). 题目简要 给定每个起火部分的起点和终点,请你求出燃烧位置的长度之 ...