
我在坑底的typescript手记
文章平均质量分 83
以日常学习为主线。记录一些在学习中、项目实践中遇到的问题以及易混点。
恪愚
江湖人称“云小梦”。一个大前端路上还未“毕业”的“小学生”。爱好分享、执着探索、乐于开源;曾参与过中大型微信小程序项目前端开发,并主导过一些官网(原生)开发;着迷于vue、node、css以及原生js技术。热衷研究现有技术的成型创新应用。目前对前端可视化和webRTC、web安全有浓厚的兴趣。开源且目前维护的有:微信小程序扩展组件库—— https://github.com/1314mxc/yunUI ,欢迎star!
展开
-
ts,依赖分析统计你的代码使用情况
我们并没有先对 import 节点进行分析,如果代码中有同名的其它局部变量,那么它们也可以通过 “遍历所有 Identifier 类型节点名称” 这样的判定思路,它只能找到与 cookie 相同名称的 AST 节点而已,这并不能代表这些 cookie 都是从 sheer 导入的。但是区别的地方来了:如果是虚构的文件,虽然也可以使用这里说的其它API,但是生成的ast中最重要的。代表的是各种名字,而我们要寻找的是 cookie 这个 API 在代码中的调用情况,那就可以通过遍历所有。原创 2023-03-27 15:42:33 · 1036 阅读 · 1 评论 -
Typescript助力项目开发:JS切换TS、TS类型定制与思考
TS已经成为可以帮助项目顺利开发的存在了。在上半年笔者就被要求采用TS开发新的项目,并在一些老项目中用TS去改造(因为沟通原因我以为某个远程组件只有TS版本)。在其中也有了一些思考。首先是目录结构。毫无疑问一个拥有TS的项目必须有像、这样的说明文件,根据项目需要可能还有这样的配置文件 —— 它们都和src目录同级。原创 2022-10-13 15:21:33 · 8315 阅读 · 6 评论 -
深入typescript之如何高效地获取变量类型
假如我们有一个JSON对象,里边包含了name、age两个属性,我们可以通过一些TypeScript内置的工具函数来实现一些有意思的事情。通过keyof与typeof组合可以得到我们想要的结果:const obj = { name: 'Niko', age: 18}// 如果是这样的取值,只能写在代码中,不能写在 d.ts 文件中,因为声明文件里边不能存在实际有效的代码type keys = keyof typeof objlet a: keys = 'name' // pass原创 2021-10-22 23:22:41 · 6941 阅读 · 0 评论 -
深入typescript之‘可选的’和‘必要的’
随着前端项目的规模不断变大,多人协同开发越来越受到所有公司的欢迎。随之而来的就是 TypeScript 被越来越多的项目所使用,这种变化并不是对技术的盲目追求,而是业务驱动下的技术进步,TypeScript 通过对原生 JavaScript 提供强类型加持,在很大程度上提升了代码质量,大大降低了多人协同场景下不同模块接口相互调用可能出现的隐性 bug。比如:如果一个接口的某个属性是非必要的,那么你可以使用可选?:,但是如果一个接口的属性在有的继承中是必要的,而在另一些时候是非必要的呢?如果一个原创 2021-09-26 15:15:50 · 2685 阅读 · 0 评论 -
我在坑底的typescript手记之几种特殊的变量类型
1. anyany 指的是一个任意类型,它是官方提供的一个选择性绕过静态类型检测的作弊方式。我们可以对被注解为 any 类型的变量进行任何操作,包括获取事实上并不存在的属性、方法,并且 TypeScript 还无法检测其属性是否存在、类型是否正确。比如我们可以把任何类型的值赋值给 any 类型的变量,也可以把 any 类型的值赋值给任意类型(除 never 以外)的变量,如下代码所示:let anything: any = {};anything.doAnything(); // 不会提示错误a原创 2021-09-12 15:28:07 · 2639 阅读 · 3 评论 -
我在坑底的typescript手记之返回值类型和参数类型
返回值类型在 JavaScript 中,我们知道一个函数可以没有显式 return,此时函数的返回值应该是 undefined:function fn() { // TODO}console.log(fn()); // => undefined需要注意的是,在 TypeScript 中,如果我们显式声明函数的返回值类型为 undfined,将会得到如下所示的错误提醒。function fn(): undefined { // ts(2355) A function whose dec原创 2021-09-06 15:49:08 · 5898 阅读 · 2 评论