Ts中常用的引用类型

/**
 * ts中将引用类型分为两个大类.
 * 复合引用类型: 数组,元组,函数,对象,类的实例等
 * 内置引用类型: Date(日期)对象, RegExp(正则), Math(数学)对象等
 * 
 * 复合引用类型需要用户自行定义该类型的组成形式. 
 * 如: 数组和元组, 需自行定义组成类型与长度
 * 对函数: 定义其参数, 行为, 返回值
 * 对对象与类实例: 定义其成员, 结构与行为
 * 
 */

// 示例如下:

// 声明常量变量
let number:number = 1
const str: string = 'string'

// 声明数组
let animals: string[] = ['cat','dog', 'bird']

// 声明元组(固定长度数组)
let sex:[string, string] = ['male', 'female']

// 声明函数
function printArrayContent(arr: string[]):void {
    console.log(`共有${arr.length}个元素`);
}

// 输出: 共有2个元素
printArrayContent(animals)

// 声明对象
let person:{name: string, age: number, selfIntroduction:()=>void} = {
    name: "Hello world",
    age: 111,
    selfIntroduction: function (): void {
        console.log(`My name is ${this.name}, ${this.age} old`);
    }
}

// 输出 My name is Hello world, 111 old
person.selfIntroduction()

// 枚举
enum Gender {
    Male = 0,
    Female = 1
}

let i: {name: string, gender: Gender};
i = {
    name: '孙悟空',
    gender: Gender.Male
}

console.log(i.gender === Gender.Male);

// 类型别名
type myType = 1 | 2 | 3 | 4;
let k: myType;
let l: myType;
let m: myType;

k = 2; 

// 声明类
class Phone{
    system: string;
    ram: number;
    rom:number;
    constructor(theSystem:string, theRam:number, theRom:number) {
        this.system = theSystem;
        this.ram = theRam
        this.rom = theRom
    }
    bootPrompt(distanceInMeters:number = 0){
        console.log(`System: ${this.system}, RAM: ${this.ram}GB, ROM: ${this.rom}GB`);
    }
}

let androidPhone:Phone = new Phone('Android', 8, 256);

// 输出: System: Android, RAM: 8GB, ROM: 256GB
androidPhone.bootPrompt()

// 对于内置引用类型, 通常已经由变成语言定义好该类型的结构, 成员, 行为. 直接使用即可

// 如下示例代码:

let currentDate = new Date(2022, 5, 1)

// 注意,TS中的月份是从0开始, 0代表1月

// 输出: 当前时间为Wed Jun 01 2022 00:00:00 GMT+0800 (中国标准时间)
console.log(`当前时间为${currentDate}`);

let patt1 = new RegExp("e")


// 输出: true
console.log(patt1.test("free"));


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TypeScript引用类型被分为三种主要类别:强引用、软引用(或弱引用)和循环引用。 1. **强引用 (Strong Reference)**: - 强引用是最常见的引用类型,当你直接赋值给一个变量时,就创建了强引用。对象在强引用的作用域内不会被垃圾回收,即使没有其他引用指向它,直到该强引用被置为`null`或删除。 - 强引用不会触发垃圾回收,因此如果你不希望对象被意外地释放,通常使用强引用。 2. **弱引用 (Weak Reference)**或**软引用 (Soft Reference)**: - 弱引用不同于强引用,它们不会阻止垃圾回收器收集对象。即使所有强引用都被删除,弱引用的对象仍然存在,但只有当垃圾回收器运行且没有其他强引用时,这些对象才会被回收。 - 弱引用主要用于那些不需要立即释放但又不想阻止其被垃圾回收的情况,比如定时器回调或者异步操作的回调函数。 3. **循环引用 (Cycle Reference)**: - 当两个或多个对象相互持有对方的引用,形成一个循环引用时,JavaScript默认的垃圾回收机制(标记-清除或引用计数)会遇到问题,因为它们无法确定哪些对象不再被引用。 - 在TypeScript,循环引用可能会导致内存泄漏,因为垃圾回收器无法正确地识别无用对象。避免循环引用的最佳实践是只在绝对必要时使用,比如使用第三方库提供的专门处理循环引用的工具(如`weak-ref`或`@types/weak-ref`)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值