Latest Posts

文章

记录技术、生活和一些阶段性的想法。

TS系列1690 字157 阅读

19.注释指令

TypeScript 接受一些注释指令。所谓“注释指令”,指的是采用 JS 双斜杠注释的形式,向编译器发出的命令。 // @ts-nocheck告诉编译器不对当前脚本进行类型检查,可以用于 TypeScript 脚本,也可以用于 JavaScript 脚本。 上面示例中,document.getElementById(123)存在类型错误,但是编译器不对该脚本进行类型检查,所以不会报错。 如果一个…

TS系列3773 字145 阅读

18. 类型工具

TypeScript 提供了一些内置的类型工具,用来方便地处理各种类型,以及生成新的类型。 这些类型工具都是语言本身提供的,可以直接使用。 Awaited<Type用来取出 Promise 的返回值类型,适合用在描述then()方法和 await 命令的参数类型。 上面示例中,Awaited<Type会返回 Promise 的返回值类型(string)。 它也可以返回多重 Promise 的返回值…

TS系列1865 字141 阅读

17. 类型映射

映射(mapping)指的是,将一种类型按照映射规则,转换成另一种类型,通常用于对象类型。 举例来说,现有一个类型A和另一个类型B。 上面示例中,这两个类型的属性结构是一样的,但是属性的类型不一样。如果属性数量多的话,逐个写起来就很麻烦。 使用类型映射,就可以从类型A得到类型B。 上面示例中,类型B采用了属性名索引的写法,\[prop in keyof A]表示依次得到类型A的所有属性名,然后将每…

TS系列3569 字145 阅读

16. TypeScript 类型运算符

TypeScript 提供强大的类型运算能力,可以使用各种类型运算符,对已有的类型进行计算,得到新类型。 注意区分typeof,typeof是用于查看一个变量的类型 keyof 是一个单目运算符,接受一个对象类型作为参数,返回该对象的所有键名组成的联合类型。 由于 JavaScript 对象的键名只有三种类型,所以对于任意对象的键名的联合类型就是string|number|symbol。 keyo…

TS系列2161 字136 阅读

15. declare 关键字与d.ts

declare 是 TypeScript 中的关键字,用于声明变量、函数、类、模块或类型的存在,但不做具体实现。它的作用是告诉 TypeScript 编译器:“这个东西已经存在了,在别的地方定义了,你就不要再报错了”。 declare 关键字用来告诉编译器,某个类型是存在的,可以在当前文件中使用。 它的主要作用,就是让当前文件可以使用其他文件声明的类型。举例来说,自己的脚本使用外部库定义的函数,编…

TS系列3328 字146 阅读

14. 装饰器

装饰器(Decorator)是一种语法结构,用来在定义时修改类(class)的行为。 在语法上,装饰器有如下几个特征。 (1)第一个字符(或者说前缀)是@,后面是一个表达式。 (2)@后面的表达式,必须是一个函数(或者执行后可以得到一个函数)。 (3)这个函数接受所修饰对象的一些相关值作为参数。 (4)这个函数要么不返回值,要么返回一个新对象取代所修饰的目标对象。 举例来说,有一个函数Inject…

TS系列726 字132 阅读

13. 命名空间namespace

namespace 用来建立一个容器,内部的所有变量和函数,都必须在这个容器里面使用。 上面示例中,命名空间Utils里面定义了一个函数isString(),它只能在Utils里面使用,如果用于外部就会报错。 如果要在命名空间以外使用内部成员,就必须为该成员加上export前缀,表示对外输出该成员。 编译后命名空间Utility变成了 JavaScript 的一个对象,凡是export的内部成员,…

TS系列785 字140 阅读

12. 模块

任何包含 import 或 export 语句的文件,就是一个模块(module)。相应地,如果文件不包含 export 语句,就是一个全局的脚本文件。 模块本身就是一个作用域,不属于全局作用域。模块内部的变量、函数、类只在内部可见,对于模块外部是不可见的。暴露给外部的接口,必须用 export 命令声明;如果其他文件要使用模块的接口,必须用 import 命令来输入。 如果一个文件不包含 exp…

TS系列1850 字134 阅读

11. 类型断言

TypeScript 提供了“类型断言”这样一种手段,允许开发者在代码中“断言”某个值的类型,告诉编译器此处的值是什么类型。TypeScript 一旦发现存在类型断言,就不再对该值进行类型推断,而是直接采用断言给出的类型。 对于没有类型声明的值,TypeScript 会进行类型推断,很多时候得到的结果,未必是开发者想要的。 上面示例中,最后一行报错,原因是 TypeScript 推断变量foo的类…

TS系列1173 字152 阅读

10. Enum类型(枚举)

enum(枚举)在 TypeScript 中是一个用于定义一组命名常量的工具,它可以让代码更加清晰、可读、可维护。 假设你有一组固定的值,比如一周的七天、订单状态、用户角色、性别等等。用字符串或数字硬编码是很容易出错的,比如: Enum 结构的特别之处在于,\\它既是一种类型,也是一个值。\\绝大多数 TypeScript 语法都是类型语法,编译后会全部去除,但是 Enum 结构是一个值,编译后会…

TS系列1477 字155 阅读

9. 泛型

前面的是比较基础的,后面的对我来说就是进阶的了。想要玩转企业级开发,后面的东西必须认真对待了。 有些时候,函数返回值的类型与参数类型是相关的。 上面示例中,函数getFirst()总是返回参数数组的第一个成员。参数数组是什么类型,返回值就是什么类型。 这个时候只能用any来处理了 但是这样的标注,就反映不出参数与返回值之间的类型关系。就算返回一个'123'也不会报错。 为了解决这个问题,TypeS…

TS系列3189 字139 阅读

8. TS Class

类(class)是面向对象编程的基本构件,封装了属性和方法,TypeScript 给予了全面支持。 类的属性可以在顶层声明,也可以在构造方法内部声明。 TypeScript 有一个配置项strictPropertyInitialization,只要打开(默认是打开的),就会检查属性是否设置了初值,如果没有就报错。 上面示例中,如果类的顶层属性不赋值,就会报错。如果不希望出现报错,可以使用非空断言…

建站相关852 字219 阅读

优化OSS

刚试了一下优化OSS 前两天已将删除图床图片时删除OSS图片了。但是还没有实现删除文章时清理文章中的图片。 之前在浏览器访问OSS图片链接的时候会自动弹出下载,原因是出于安全考虑,当您通过Bucket默认域名访问某些文件时,可能会触发强制下载或禁止下载。如果您希望在浏览器中正常预览或下载这些文件,您需要为Bucket绑定自定义域名,并通过自定义域名访问OSS文件。绑定自定义域名不会影响Bucket…

TS系列725 字140 阅读

7. TS的interface

interface是对象的模板,可以看作是一种类型约定,中文译为“接口”。使用了某个模板的对象,就拥有了指定的类型结构。也就是说,能用来声明一个对象的结构。 和type类似,但是interface主要用于描述对象结构,不支持直接定义基本类型、联合类型。元组。而type 可以描述任何类型(包括基本类型、联合类型、元组等)。 interface能用extends,可继承多个接口,而type需要用&来组…

TS系列584 字144 阅读

6. TS对象类型标注

直接标注: 属性的类型可以用分号结尾,也可以用逗号结尾。 除了type命令可以为对象类型声明一个别名,TypeScript 还提供了interface命令,可以把对象类型提炼为一个接口。 如果某个属性是可选的(即可以忽略),需要在属性名后面加一个问号。 属性名前面加上readonly关键字,表示这个属性是只读属性,不能修改。只读属性只能在对象初始化期间赋值,此后就不能修改该属性。 如果对象的属性非…

TS系列663 字140 阅读

5. TS函数

函数的类型声明,需要在声明函数时,给出参数的类型和返回值的类型。如果没有返回值,可以标注为void 返回值的类型通常可以不写,因为 TypeScript 自己会推断出来。 如果变量被赋值为一个函数,变量的类型有两种写法。 如果函数的某个参数可以省略,则在参数名后面加问号表示。 设置了默认值的参数,就是可选的。如果不传入该参数,它就会等于默认值。 可选参数与默认值不能同时使用。 参数解构 : res…

TS系列586 字140 阅读

4. TS中的数组

根本特征:所有成员的类型必须相同,但是成员数量是不确定的,可以是无限数量的成员,也可以是零成员。 需要只读数组的时候,只需要再类型声明前加上readonly: TypeScript 将readonly number\[]与number\[]视为两种不一样的类型,后者是前者的子类型。(因为只读数组没有pop()、push()之类会改变原数组的方法) 特殊的是:如果这样写就会报错:const arr:…

TS系列1404 字126 阅读

3. 类型详解

Js类型:boolean string number object undefined null bigint symbol TypeScript 继承了 JavaScript 的类型设计,以上8种类型可以看作 TypeScript 的基本类型。复杂类型由它们组合而成。 和Java不同,js类型的名称都是小写字母,首字母大写的Number、String、Boolean等在 JavaScript 语…

TS系列1788 字140 阅读

2. TS类型标注

就是为各种变量、方法参数和返回值等标注其数据类型 简单类型直接冒号 + 类型: function的标注为:参数后冒号 + 类型,返回值在括号后加冒号和类型: any 类型表示没有任何限制,该类型的变量可以赋予任意类型的值。相当于js原本的变量,可以赋任意数据类型的值。即TypeScript 不对其进行类型检查。应该尽量避免使用any类型,否则就失去了使用 TypeScript 的意义。 在类型推断…

TS系列1005 字146 阅读

1. 了解Typescript

背景:前端工作已经有好几年了,ts也接触了不少,但一直是知其然不知其所以然。虽然知道它对于前端来说很重要,也有想过去了解,但是始终没有静下心系统的进行学习。最近环境不太好,所以计划利用这个周末的时间来系统性学习、查缺补漏。目标是完全弄懂概念以及在实战中的应用。 一开始打算使用视频来学习,但是感觉太慢了。说的比较基础,也难以找到合适我的视频。所以使用阮一峰老师的ts博客进行学习。本系列文章主要用于记…

建站相关945 字214 阅读

博客网站正式运营

断断续续的终于将这个博客网站开发好了。 做一个网站,这是很久以前就有的想法了。 最早应该是源于初中吧,那时候刚流行起智能手机,对于网站的访问体验比功能机强大了不知道多少(玩过3GQQ家园的应该都理解)。当时流行发QQ空间,初中毕业时在亲戚家里玩电脑,整天最喜欢的就是打开网页版的QQ空间进行布置。十块左右能开通一个月的黄钻,能用非常多的装饰去打造自己的个性空间、设置背景音乐等。那时候的我,觉得非常的…

技术相关#前端工程架构399 字251 阅读

免费获取ssl证书,轻松开启Https

在同事的介绍下知道了Let's Encrypt。免费获取ssl证书,将http变为https。 官网: [链接] (官网看不懂,还是AI好用,直接给我提纯了) 使用方式很简单: 1. 一个已绑定到服务器的域名(如 example.com) 2. 你的网站通过该域名能被访问(公网 IP、80/443 端口已开放) 3. 服务器上有 root 权限 4. 已安装好 Nginx 或 Apache (总结…

技术相关581 字223 阅读

发现了一个好用的编辑器

官网: Quill 用了一段时间的w-editer,说实话挺难用的。就想着换一个,不过问AI出来的都是一堆很知名很商业化的东西,不是会员都只能试用。会员价格还老高,我这种小网站根本无力承担。 今天在群里问了问,还真发现了一个叫Quill的富文本编辑器。免费,好用,好看,轻量。 有很多API,能够获取笔记字数,监听文本是否发生改动等。工具栏也很好配置。 还有很多功能没仔细研究,有空再集成进来。 官网…

思考感悟649 字269 阅读

关于信息茧房

以前对于信息茧房这个词是没有太大感触的,理解一些概念,但感受不深。 直到今天刷知乎,发现推荐的问题死活就是那几个。都是我很久以前就看过的问题,它还在不断的给我推荐。甚至一些问题我只是偶尔搜索了一下,根本不感兴趣,但也会周而复始的推荐。 我想退出登录之后浏览,结果发现不登录根本不能访问了。对于这么大的一个论坛网站,推荐的内容却让我重复看到想吐。这一刻我终于直观体会到了处于信息茧房中的感受。 不只是知…

建站相关443 字214 阅读

新域名

原来的yangliuyiyi.com用了一段时间了,感觉还不错,可惜有点长,今天随便逛逛域名商城,捡了个大漏。花了44块钱,买了个域名:ryurl.com 不仅短,还是.com域名。还含有url一词。原来我只想到了link,没想到url其实也不错,也同样合适做书签网站。 前面的ry两个字母也不错,能够寓意:如意、任意、日月等词汇。 比其他4杂5杂和一些完全找不出意义的字母组合好了不知道多少。 就这…

思考感悟1286 字288 阅读

平衡开发心态

有时候对这些互联网的大厂真是又爱又恨,当我需要什么但没有的时候,感叹他们什么都有。当我做出了什么或有什么新奇想法时,又发现他们早就做了这些功能,又感叹他们连这些小项目都给做了,让我们这些小开发者汤都没得喝。不知道如何平衡这种心态。 我试着问了问ChatGPT,它给我的回答是这样的: 你的这种感受很真实,很多开发者都有类似的体会。大厂的确凭借资源、人才和数据优势,把很多事情做得又快又好,导致小开发者…

AI#大模型679 字284 阅读

简单部署deepseek

安装到本地文档: [链接] Ollama 配置: [链接] GraphRAG: [链接] 阿里云服务支持: [链接] 今天试着本地部署了一下deepseek的残疾版本,deepseek-r1-1.5b。 很简单,下载ollama之后使用ollama run deepseek-r1:1.5b就行了。 (缺点是本地安装了ollama死活无法下载模型,而使用docker启动之后就能飞速安装大模型了,还不…

代码技巧292 字188 阅读

伪类替代

在 Vue 中,如果需要覆盖子组件或第三方组件样式,可以使用 来突破 scoped 作用域限制。 等价于: 主要用于: 覆盖 UI 组件库样式(如 TDesign、Element Plus) 修改子组件内部样式 scoped 无法覆盖的第三方样式 当 无法生效或覆盖不成功时,可以使用“外层类 + global”的方式。 表示同一个元素同时拥有两个 class: 表示父子关系:

技术相关459 字237 阅读

关于Jenkins

折腾了一天的window Jenkins有感: 最开始是在Linux上使用Docker部署了Jenkins,很方便。但是我2核2G的服务器时常卡住,所以就没用了。用了很长一段时间的手动打包后上传到服务器。 为了打包方便,决定在家里的电脑上安装一个jenkin,然后在其他地方远程连接电脑进行打包。 昨天费劲配置上了Jenkins环境,插件安装地址没有换,一直没注意到,折腾了很久的本地安装插件。后面又…

代码技巧269 字188 阅读

开发/生产环境配置

终于会配置vite的环境变量了 直接创建.env就好,这个用来放置生产和开发环境相同的变量 然后创建.env.development和.env.production两个文件 在使用时,会有限获取这两个文件中的变量,如果没有,才会获取.env 曾经以为需要在服务器上配置,但其实根本不需要,使用npm run build 的构建产物会使用.env.production 还有就是写了这么久的vue,直到…

代码技巧174 字198 阅读

TailwindCSS集成踩坑记录

难受,今天在集成TailwindCSS的时候,不管是ChatGPT还是Tailwind中文文档,给出的集成方法都是落后于最新版本的。查看了官方英文文档,很轻松就安装上了。 被折腾了几个小时,各种死循环,各种焦虑。 还是要学好英语。别人嚼碎的,可能还没嚼烂。 解决github无法通过22端口访问的问题: [链接]

生活经验212 字295 阅读

电脑卡顿解决

最近电脑相当卡顿,最开始怀疑是系统更新之后导致的。 后面在网上查找这个windows版本,但是好像没有相关案例。 后面怀疑是不是因为之前破解Navicat过程中被植入了挖矿程序,但是杀毒却没有反应。 一度想要重装系统,全面转战Linux。 最后在抖音上搜索,在学到了释放静电这个词。 因为天气太冷了,导致CPU降频,所以卡顿。 最后电脑关机,拔掉所有外接设备之后,长按开机键30s,最后再开机。 问题…

算法学习#算法267 字101 阅读

算法分析-两数之和

今天做一个简单算法题:两数之和 给定一个整数数组 和一个整数目标值 ,请你在该数组中找出和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。 看到这个题一般会想到双重遍历,两两组合等于 就返回下标。但是这样太不够优雅。 我们只需要把遍历过的数放到字典中,将它作为 、它的下标作为 。后面遍历的数中,如果在字典里有…

好物推荐152 字180 阅读

via浏览器

突然想起了很久以前用过的一个浏览器:via。 以前就被它超小的体积所吸引,现在下载回来感觉功能更多了。尤其是能够直接打开vconsole,太适合开发者了。 正愁使用safari打开本站太丑,微信点开不方便。正好找到了这个3.2m的浏览器。各方面都挺符合我的要求,正好用来承载我的笔记网站了。

技术相关#Java1013 字215 阅读

将Java项目部署到服务器

为了把Java项目部署到服务器上,我可走了不少万弯路,现在将这些方法分享给大家。 最初使用的方案,手动部署: 1. 先上服务器,使用ps aux | grep java和kill -9 \<PID关闭正在运行的Java 2. 本地使用mvn clean package打包 3. 将打包后的jar包上传到服务器:scp target/projectName.jar root@<服务器ip:/var/…

代码技巧66 字188 阅读

Java开发id相关

需要返回id的,不管是实体还是DTO,都需要加上注解: 否则会int类型的id会在传输中丢失精度,导致操作错误

技术相关#OSS269 字249 阅读

OSS文件上传

上传文件实现: 阿里云OSS管理: [链接] Java项目集成文档: 1\. [链接] 2\. [链接] 3\. [链接] 出于安全考虑,当您通过Bucket默认域名访问某些文件时,可能会触发强制下载或禁止下载。如果您希望在浏览器中正常预览或下载这些文件,您需要为Bucket绑定自定义域名,并通过自定义域名访问OSS文件。绑定自定义域名不会影响Bucket默认域名,您可以继续通过Bucket默认域…