自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

文本魔术

欢迎关注文本魔术

  • 博客(187)
  • 资源 (1)
  • 收藏
  • 关注

原创 为什么函数式编程应该成为软件开发的未来

它很难学,但是你的代码会产生更少的意外。你可能认为软件产品生命周期中最长最昂贵的阶段是系统的初始开发阶段,因为所有那些伟大的功能都是在最初的想象中创建的。事实上,最困难的部分是之后的维护阶段。这是程序员为他们在开发过程中走捷径付出代价的时候。那么他们为什么要走捷径呢?也许他们没有意识到他们在走捷径,只有当他们的代码被部署并被大量用户使用时,其隐藏的缺陷才会暴露出来,也许开发人员很着急,上市时间的压力几乎可以保证他们的软件会包含更多的错误。大多数公司在维护代码方面的困难导致了第二个问题:脆弱性。

2024-04-08 06:08:06 913

原创 有原则的程序员如何超越竞争对手(附演讲视频》

接受干净的编码实践,建立可维护的代码结构,并有效地管理自己,对于成为当今专业行业中具有竞争力和受欢迎的程序员至关重要。在本指南中,我们将探讨每个熟练的程序员都应该精通的基本编码主题

2024-04-08 05:58:44 356 2

原创 如何应用函数式编程实现领域驱动设计

通常,面向对象编程语言是实现DDD的首选,而FP被认为擅长数据科学管道。事实上,DDD只是一个你应该专注于领域的想法,它不依附于任何特定的编程范式。你可以利用FP的特性,如可组合的、单子、应用程序和模式匹配,在“组件”架构级别实现DDD。欢迎关注公众号:文本魔术,了解更多。

2024-02-23 05:15:00 896

原创 函数式编程和领域驱动设计——天作之合!

这篇演讲展示了如何优雅而有效地使用函数式语言(例如ReasonML)以及函数式使用的经典语言(例如TypeScript)来实现领域驱动设计的许多概念。看看如何将这些技术集成到经典语言和架构中,为实际应用这些技术提供了机会。这些概念包括:* 六边形架构 * 描述不变量 * 无状态服务。DDD中的许多概念都可以很容易地用函数式编程实现。欢迎关注公众号:文本魔术,了解更多。

2024-02-23 05:00:00 548

原创 TypeScript 中的 unknown 类型的用途

TypeScript是一种发展非常快的语言,有时很难跟上它的步伐,有太多的特性不断发布, 我们可能会错过一些非常重要的珍宝。我认为unknown类型就是其中之一。

2024-02-22 05:15:00 1122

原创 TypeScript 和集合论

集合理论为 TypeScript 中类型的推理提供了一种思维模型,通过集合理论的视角,我们可以将类型看作一组可能的值,也就是说,类型的每个值都可以被看作是集合中的元素,这使得类型可以与集合相比较,集合的元素根据集合的定义属于该集合。Upcasting 将子类型转换为超类型,也就是将合适的子集转换为超集,TypeScript 允许这种转换,因为它是类型安全的:如果一个集合是另一个集合的合适子集,那么小集合中的任何元素都是大集合中的成员。如果一个类型是一个集合,那么条件类型中的条件就等于一个子集检查。

2024-02-22 05:00:00 1222

原创 用 TypeScript 做领域建模

静态类型的函数式编程语言鼓励一种非常不同的类型思考方式。类型系统是你的朋友,而不是一个麻烦,可以以许多方式使用,这些方式可能对OO程序员来说并不熟悉。类型可以用细粒度的、自文档化的方式来表示领域。在许多情况下,类型甚至可以用来编码业务规则,这样你就不会创建错误的代码。然后,你可以使用静态类型检查几乎作为即时单元测试 - 确保你的代码在编译时是正确的。在这篇演讲中,Scott将通过一些简单的现实世界示例,探讨一些可以将类型作为领域驱动设计过程的一部分的方法。没有术语,没有数学,也没有先前的FP经验。

2024-02-21 05:15:00 693

原创 TypeScript 中实用的 SOLID 原则(五):依赖反转原则

我们继续我们的旅程,介绍最后一个 SOLID 原则:依赖反转原则。学习一门新的编程语言通常是一个简单的过程,我经常听到:“第一门编程语言你需要一年的时间来学习,第二门语言需要一个月的时间,第三门语言需要一周的时间,然后接下来的每一门语言都需要一天的时间。这么说有点夸张,但是在某些情况下也并非完全不符合事实,例如,跳转到与之前的语言相对相似的语言,比如Java和C#,可以是一个简单的过程。

2024-02-21 05:00:00 1855

原创 TypeScript 中实用的 SOLID 原则(四):接口隔离原则

继续我们的 SOLID 原则之旅,讨论对代码设计有深远影响的接口隔离原则。当初学者开始他们的编程旅程时,最初的重点通常是算法和适应一种新的思维方式。一段时间后,他们深入研究面向对象编程(OOP)。如果这个转变被延迟,那么从函数式编程思维模式的转变可能会有挑战性,然而,最终,他们会接受对象的使用,并在必要时将它们合并到代码中,有时甚至在不需要它们的地方。当他们学习抽象并努力使代码更可重用时,他们可能会过度概括,导致抽象应用到所有地方,这可能会阻碍未来的开发。

2024-02-20 05:15:00 1269

原创 TypeScript 中实用的 SOLID 原则(三):Liskov 替换原则

继续我们的 SOLID 之旅,本篇来介绍定义最复杂的 SOLID 原则——Liskov 替换原则。我并不是一个阅读爱好者。通常,当我阅读时,我发现自己在过去的几分钟里失去了文本的主题。我经常在整个章节结束前都不知道它到底讲了什么。当我试图专注于内容时,这可能会令人沮丧,但我不断意识到我需要回头。这就是当我转向各种类型的媒体来了解一个话题时发生的情况。我第一次遇到这个阅读问题是在SOLID原则,特别是Liskov替换原则,它的定义对我来说太复杂了,特别是它的正式格式。

2024-02-20 05:00:00 1801

原创 TypeScript 中实用的 SOLID(二):开放/封闭原则

继续我们的旅程,介绍一个加强应用程序的灵活性的原则:开放/封闭原则。许多不同的方法和原则可以实现代码的长期改进,其中一些在软件开发社区中广为人知,而另一些则仍然有些不为人知。在我看来,这与开放/封闭原则(The Open/Closed Principle)的情况一样,由SOLID中的字母O代表。根据我的经验,只有那些真正对SOLID原则感兴趣的人才会理解这个原则的含义。在某些情况下,我们可能在没有意识到的情况下就应用了这个原则,比如在使用策略模式时。然而,策略模式只是开放/封闭原则的一种应用。

2024-02-19 05:15:00 1064

原创 TypeScript 中实用的 SOLID 原则(一):单一责任原则

让我们通过介绍最著名的单一职责原则开始软件开发中的基本原则之旅。在我的职业生涯中,有一段时间我是一个“代码猴子”,不仅仅是在开始的时候,甚至在完成我的学业之后,我也没有成为一名软件工程师。有一年夏天,我想反思一下我不断得到的反馈。“你知道,你的代码可以工作。你写得超级快。但是,你知道,没有人能理解里面发生了什么。你怎么能期望我扩展它?所以,我花了整个夏天阅读关于软件制作的书籍。是的,制作。我花了一段时间才有了突破,现在我有了。

2024-02-19 05:00:00 953

原创 VSCode1.86版本新增及改进功能介绍(附:发布会视频)

主要亮点包括:每个窗口的缩放级别 - 独立调整每个窗口的缩放级别。嘿代码语音命令 - 开始一个聊天会话与语音命令。多文件差异编辑器 - 在差异编辑器中快速查看多个文件的差异。触发断点 - 使用断点依赖进行高效调试。扩展了粘性滚动的支持 - 树视图和笔记本中的粘性滚动。

2024-02-18 05:15:00 886

原创 TypeScript 类型系统极限探索

TypeScript的类型系统是图灵完备的:这意味着它具有条件分支(条件类型)并可以使用任意大量的内存。因此,您可以将类型系统作为其自己的编程语言来使用,包括变量、函数和递归。开发人员已经在类型系统中扩展了类型操作的边界,以编写一些非常令人难以置信的东西!本文收集了 TypeScript 开发人员对类型系统能够实现的功能的探索成果。它们从二进制算术和基本虚拟机到迷宫解算器和完整的编程语言。

2024-02-18 05:00:00 1589

原创 TypeScript 为什么不遵循严格的语义版本控制

JavaScript/TypeScript生态系统中的大多数项目都会发布新版本,版本号遵循语义版本控制(Semver)。Semver 是一个规范,描述了如何在每次新版本发布时可预测地增加包的版本号。TypeScript 因其版本没有严格遵循 semver 而闻名。本文将深入探讨

2024-02-17 05:15:00 1508

原创 TypeScript编译器源码中的类型大全

最近在看 TypeScript 编译器源码时,在 src\compiler\types.ts 文件中看到了 TypeFlags 枚举,该枚举列出了 TypeScript 所有内置类型,可以算是内置类型大全了,感觉对熟悉TypeScript类型系统很有参考意义,感兴趣的朋友们可以了解一下。欢迎关注公众号:文本魔术,了解更多。

2024-02-17 05:00:00 114

原创 typescript + vue.js cheatsheet

提升你的Vue技能,包括关键的TypeScript概念,比如组件以及更多。值得保存备用。

2024-02-16 05:15:00 303

原创 在TypeScript中使用Rests和元组缩小函数参数类型

TypeScript提供了多种方法来描述可以以多种方式调用的函数的类型。但是最常见的两种策略——函数重载和泛型函数——对于函数的内部实现如何理解其参数的类型并没有多大帮助。本文将介绍三种技术,用于描述根据前一个参数变化的参数类型。前两种技术允许使用标准 JavaScript 语法,但在描述函数内部的类型时不够精确。第三种技术需要使用...数组展开和[...]元组类型,以一种时髦的新方式在内部获得正确的类型。fruit: either"apple"or:…在这个函数中,第二个参数的类型与第一个参数不同。

2024-02-16 05:00:00 1746

原创 TypeScript中的‘using‘关键字的用法

TypeScript 5.2 引入了一个新的关键字 ——using—— 你可以用它来处理任何带有函数的代码,在当它离开作用域时,作一些自动操作。这是基于TC39的提案,最近在JavaScript的进展中达到了阶段3(共4个阶段),这意味着它已经准备好由早期采用者进行测试。using对于管理文件句柄、数据库连接等资源非常有用。

2024-02-15 05:15:00 868

原创 如何在 TypeScript 中获取值为指定类型的对象的键

TypeScript 中一个常见的问题是,当你想获取一个对象的键值时,该对象的值是给定的类型,例如,假设你有一个这样的对象:

2024-02-15 05:00:00 1148

原创 如何在TypeScript中正确定义Window类型

在几乎所有的前端应用中,你都可能遇到过这个错误:类型'Window & typeof globalThis'上不存在属性'X'。在这篇文章中,我们将介绍几个不同的解决方案来解决这个问题。

2024-02-14 05:15:00 2225

原创 TypeScript类型系统行为

什么是结构类型?TypeScript使用结构类型。这个系统不同于你可能使用过的其他一些流行语言(如Java、c#等)所使用的类型系统。结构类型背后的思想是,如果两个类型的成员是兼容的,那么它们就是兼容的。

2024-02-14 05:00:00 1875

原创 《EffectiveTypeScript》作者在Etsy大会上的演讲总结:几幅图带你理解TypeScript

弗雷德·布鲁克斯:“给我看你的流程图,隐藏你的表格,我会继续感到困惑。给我看你们的表格,我通常就不需要你们的流程图了,它们会很明显。有时候当我在写Javascript的时候,我想举起我的手说“这是胡扯!可以看到,TypeScript的类型系统已经超出 java 的 oop 领域了!“TypeScript 是 JavaScript 的类型化超集”“TypeScript 是 JavaScript 的超集”糟糕的类型会导致对抗 tsc(你会输的!2. 不要对 抗类型检查器(你会输的)好的类型引导正确的代码。

2024-02-13 05:15:00 290

原创 认识 TypeScript 中的类型语言编程

在写了一段时间的 TypeScript 之后,我突然想到 TypeScript 语言实际上是由两个子语言组成的 - 一个是 JavaScript,另一个是类型语言:对于 JavaScript 语言来说,世界是由 JavaScript 值组成的。对于类型语言来说,世界是由类型构成的。当我们写 TypeScript 代码时,我们不断地在这两个世界之间跳来跳去

2024-02-13 05:00:00 1656

原创 创造魔法:构建 TypeScript 优先的框架 - Nuxt 作者Daniel Roe在TS 大会 2023上的演讲

我将深入研究 Nuxt 的内部,描述我们如何构建一个 TypeScript 优先的框架,该框架与用户的 IDE 和类型检查设置深度集成,以提供端到端的全栈类型安全、布局提示、中间件等,类型化运行时配置选项,甚至类型化路由。此外,我将强调我最兴奋的事情,以及 TypeScript 如何使这不仅对我们,而且对任何库作者都成为可能。

2024-02-12 05:15:00 227

原创 理解 TypeScript 的优点和缺陷

JavaScript的动态类型允许灵活性,但它增加了额外的复杂性和风险。如果有人将 Number 传递给一个期望 Date 的函数,函数很可能会抛出异常,除非函数添加一些额外的代码来确保参数实际上是 Date。TypeScript 的主要优势在于类型检查,通过在语言中添加静态类型检查,我们可以在构建时捕获许多这样的问题,从而在代码发布之前修复它们。但是它并不是万灵药,就像任何工具一样,它也有积极和消极的方面。好的方面优秀的代码完成支持渐进式采用更好的第三方库集成社区提供的类型不太好的方面。

2024-02-12 05:00:00 1918

原创 为什么 JavaScript 开发者应该使用 TypeScript

如果你是一名 JavaScript 开发人员,你可能已经听说过 TypeScript。或者你可能已经快速地涉足其中,但其优点却不是立即显而易见的。或者你的同事在过去两年里一直谈论它,而你很想知道这些炒作是关于什么的。就我个人而言,我经历过以上三种情况 —— 当我第一次深入 TypeScript 时,我发现作为一个初学者/爱好者,很难在一个地方找到我需要的所有答案。我希望这篇文章可以:解释为什么你应该学习 TypeScript。

2024-02-11 05:15:00 1595

原创 开发人员是第一个在工作中采用人工智能的群体,为什么这很重要

从10年前作为一名开发人员开始在GitHub工作到成为首席运营官,我了解到开发人员通常是组织其他部门变革的风向标。作为新技术和实践的早期采用者,开发人员通常是商业环境变化的风向标,这就是为什么在 GitHub,我们相信企业越了解开发人员需要什么才能茁壮成长,他们就越能更好地支持组织的其他成员。这一点从未像他们采用人工智能那样明显。虽然世界仍在努力解决它的用例,但我们发现开发人员已经在大规模使用它。事实上,我们最近对开发人员的调查发现, 92%的人已经在工作或个人时间使用人工智能工具。

2024-02-11 05:00:00 1728

原创 使用IIMT来转换TypeScript中的任意union

自从我第一次接触到高级 TypeScript 以来,我一直喜欢着一种特定的模式,它构成了我第一个 TypeScript 技巧的基础,并且从那时起对我来说就非常有用。我称之为 IIMT:即立即索引映射类型。在讨论发生什么之前,让我们先看看结构。这个映射类型遍历SomeObject的键,并为每个键创建一个新的对象类型。在这个例子中,我们创建了一个新的对象类型,它只有一个属性,key,它的值就是对象的键。然后我们立即用索引到这个映射类型,也就是a | b。

2024-02-10 05:15:00 417

原创 面向JavaScript开发者的TypeScript简明介绍

TypeScript 由四个部分组成:语言服务用于在编辑器(IDE)中运行类型检查器(例如 VS Code)。编译器运行类型检查器并输出等效 JavaScript 的程序。类型检查器读取文件并报告可能的错误/不匹配。编程语言使用现有的 JavaScript 语法,加上新的特定类型语法。

2024-02-10 05:00:00 1472

原创 TypeScript术语表

术语帮助我们描述复杂的上下文,并防止我们在讨论代码时感到困惑。它在理解TypeScript和JavaScript方面起着重要的作用。了解编程语言的控制结构很重要,能够命名它们的上下文和环境也同样重要。使用正确的词汇表在代码审查中特别有效,因为它支持我们用语言表达我们的想法。算法声明式编程命令式编程函数声明函数表达式箭头函数表达式引用不透明表达式引用透明表达式块级作用域函数作用域方法与函数确定性函数恒等函数纯函数核心模块环境上下文环境模块数组解构断言函数断言签名。

2024-02-09 05:15:00 1629

原创 你在还认为TypeScript是为Java开发者准备的JavaScript吗

很多人认为TypeScript不过是为Java开发者而准备的JavaScript。事实真的是这样吗?恐怕不然。TypeScript 可以远远超过这一点 —— 它是一个微妙的工具,一个简单优雅的 JavaScript 封装层,它是驱动 Web 的编程语言。如果你发现自己:用你几乎不了解的库和框架编写 JavaScript与其他开发人员一起编写 JavaScript编写处理后端数据的 JavaScript写一些将来你还需要继续使用的 JavaScript。

2024-02-09 05:00:00 1583

原创 我们为什么专注于TypeScript

在过去的几年中,TypeScript以其强大的类型检查和丰富的类型生态系统,已经在职位描述中逐渐替代了JavaScript,成为新项目的首选语言。我们希望通过文本魔术公众号,帮助你达到Wizard级别的TypeScript技能,让你能够更高效地编写出更强大、更具弹性的应用程序,从而提升你作为Web开发人员的长期竞争力。帮助你建立TypeScript的技能和对TypeScript的理解,同时让你熟悉和掌握TypeScript的工具生态系统。等,你可以立即在工作中应用这些技巧,提升你的开发效率。

2024-02-08 05:15:00 466

原创 在TypeScript应用程序中应该将类型放在哪里

开发者喜欢好的文件夹结构,它有助于让应用程序代码看起来有条理,JavaScript开发者通常知道把实现代码放在哪里,但类型呢?在本指南中,我将向您介绍我对在应用程序代码中将类型放在哪里的看法,对于大多数人来说,它将有望确认您现有的直觉,对于其他人来说,它将为您提供一些新的想法来尝试。

2024-02-08 05:00:00 1092

原创 从TSV到CSV:GitHub Copilot Chat如何让数据转换变得轻松!

现在,我不是 Python 开发人员,所以我不确定如何在 Python 中完成这个任务,虽然我可以使用 PapaParse 这样的 npm 模块来完成这个任务,但我希望尝试另一种语言。步骤1:下载你的TSV文件并将其添加到一个文件夹中,然后在VSCode(或您首选的编辑器)中打开该文件夹。如果你不熟悉GitHub Copilot Chat,请阅读这篇博客文章,了解如何开始使用它。步骤2:创建一个新的Python文件,我把我的文件命名为。步骤 5:保存文件,运行带有。,然后享受您的 csv 文件!

2024-02-07 05:15:00 422

原创 我是如何使用 GitHub Copilot Chat 来调试我的部署工作流的

我喜欢这个的原因是它不仅提供了如何解决问题的建议,copilot 还给了我一点启发:我不知道工作流是从仓库的根目录运行的,我以为它们是从 .github/workflows 目录运行的,所以我学到了一些新的东西。我在Actions方面遇到了一些问题,然后想,哦,GitHub Copilot是帮助我的完美工具,所以我决定使用它来帮助我调试我的工作流。我通常使用Canva来创建我的演示文稿,但我真的不想这样做,因为我对小细节不是很感兴趣,我不想花很多时间在设计上,我想专注于内容和交付。

2024-02-07 05:00:00 1664

原创 我是如何使用 GitHub Actions 批量关闭 1000 个 GitHub Issues 的

我为什么要这么做呢?我们有一个私人仓库,维护者可以请求加入私人维护者社区。有人认为用 @undefined 和 undefined 的句柄提交 1000 个问题到仓库会很有趣,但这是一个问题,因为它使得维护者很难找到需要被批准的实际问题。在我能够向问题表单添加验证之前,我们需要对仓库做一些额外的工作,但与此同时,我们需要关闭这些问题。因此,我认为一个临时解决方案将是创建一个 GitHub 操作,关闭所有的问题 - 标题包含。我们从1600多个问题,在几分钟内减少到64个有效问题。

2024-02-06 05:15:00 289

原创 在VSCode中使用GitHub Copilot Chat

GitHub Copilot Chat 是一个扩展,可以在你的代码编辑器或IDE(目前是VS Code或Visual Studio)中工作,允许你从编辑器中与 GitHub Copilot 进行对话。

2024-02-06 05:00:00 1223

原创 GitHub Copilot 的10种意想不到的使用方法

作为开发者我们知道,开发应用不仅仅是编写代码,还有一些其他相关工作要做:有提交消息要写,CLI命令要执行,还有晦涩的语法要记住。虽然你可能已经使用GitHub Copilot来支持你的编码,但你知道它也可以支持你的其他工作吗?

2024-02-05 05:15:00 1541

原创 TypeScript 中的函数类型很奇怪

让我们看看前几天我被问到的一个问题:在类型中,我们表示函数接受一个string并返回void,但是当我们使用注解一个不接受任何参数的函数时,TypeScript 不会报错。为什么会这样?让我们看一个看起来不那么奇怪的例子:这里,我们对字符串数组使用了.forEach方法。我们传递给.forEach的函数可以接收多个参数:})但是我们并没有使用这些参数,那么为什么 TypeScript 没有报错呢?

2024-02-05 05:00:00 294

linux unix 设计思想

unix+linux设计思想,包含一整套unix设计哲学

2014-01-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除