首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nest.js 从零到壹系列(五):使用管道、DTO 验证入参,摆脱 if-else 的恐惧

使用 DTO 可以清晰的了解对象的结构,使用 Pipes(管道)配合 class-validator 还可以对参数类型进行判断,还可以在验证失败的时候抛出错误信息。...accountName: string | number; @IsNotEmpty({ message: '真实姓名不能为' }) @IsString({ message: '真实姓名必须是...String 类型' }) readonly realName: string; @IsNotEmpty({ message: '密码不能为' }) readonly password:...: '手机号不能为' }) @IsNumber() readonly mobile: number; readonly role?...但如果不拥抱 TypeScript 的特性,那还不如直接用 JavaScript 来写,这样还更快(如 Koa、Egg等),定义 DTO 还有一个好处,那就是可以配合 Swagger 自动生成文档,并且是请求的

4K41
您找到你想要的搜索结果了吗?
是的
没有找到

TypeScript 演化史 — 第十章】更好的值检查 和 混合类

更好地检查表达式的操作数中的 null/undefined 在TypeScript 2.2中,检查得到了进一步的改进。TypeScript 现在将带有操作数的表达式标记为编译时错误。...具体来说,下面这些会被标记为错误: 如果+运算符的任何一个操作数是的,并且两个操作数都不是any或string类型。...如果-,*,**,/,%,>,>>>, &, | 或 ^运算符的任何一个操作数是的。 如果 ,=或 in 运算符的任何一个操作数是的。...如果 instanceof 运算符的右操作数是的。 如果一元运算符+,-,~,++或者--的操作数是的。 来看看如果咱们不小心,表达式操作数就会坑下咱们的情况。...: number ) { return password.length >= min && password.length <= max; // Error: 对象能为“未定义”. } 如果操作数的类型是

2.6K10

Nest.js 实战系列四:使用管道、DTO 验证入参,摆脱 if-else 的恐惧

使用 DTO 可以清晰的了解对象的结构,使用 Pipes(管道)配合 class-validator 还可以对参数类型进行判断,还可以在验证失败的时候抛出错误信息。...accountName: string | number; @IsNotEmpty({ message: '真实姓名不能为' }) @IsString({ message: '真实姓名必须是...String 类型' }) readonly realName: string; @IsNotEmpty({ message: '密码不能为' }) readonly password:...: '手机号不能为' }) @IsNumber() readonly mobile: number; readonly role?...但如果不拥抱 TypeScript 的特性,那还不如直接用 JavaScript 来写,这样还更快(如 Koa、Egg等),定义 DTO 还有一个好处,那就是可以配合 Swagger 自动生成文档,并且是请求的

3.8K20

TypeScript 演化史 -- 10】更好的值检查 和 混合类

更好地检查表达式的操作数中的 null/undefined 在TypeScript 2.2中,检查得到了进一步的改进。TypeScript 现在将带有操作数的表达式标记为编译时错误。...具体来说,下面这些会被标记为错误: 如果+运算符的任何一个操作数是的,并且两个操作数都不是any或string类型。...如果-,*,**,/,%,>,>>>, &, | 或 ^运算符的任何一个操作数是的。 如果 ,=或 in 运算符的任何一个操作数是的。...如果 instanceof 运算符的右操作数是的。 如果一元运算符+,-,~,++或者--的操作数是的。 来看看如果咱们不小心,表达式操作数就会坑下咱们的情况。...: number ) { return password.length >= min && password.length <= max; // Error: 对象能为“未定义”. } 如果操作数的类型是

2.8K20

TypeScript 演化史 — 第八章】字面量类型扩展 和 无类型导入

} } 更好地检查表达式的操作数中的 null/undefined 在TypeScript 2.2中,检查得到了进一步的改进。TypeScript 现在将带有操作数的表达式标记为编译时错误。...具体来说,下面这些会被标记为错误: 如果+运算符的任何一个操作数是的,并且两个操作数都不是any或string类型。...如果-,*,**,/,%,>,>>>, &, | 或 ^运算符的任何一个操作数是的。 如果 ,=或 in 运算符的任何一个操作数是的。...如果 instanceof 运算符的右操作数是的。 如果一元运算符+,-,~,++或者--的操作数是的。 来看看如果咱们不小心,表达式操作数就会坑下咱们的情况。...: number ) { return password.length >= min && password.length <= max; // Error: 对象能为“未定义”. } 如果操作数的类型是

4.5K10

《深入浅出Dart》安全

现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 安全 更强的类型系统,更少的错误 近些年来,编程语言的类型安全性已经成为软件开发社区的一个主要焦点。...由于这样的错误通常在运行时才会被检测到,所以它们通常很难发现和修复。 安全通过在类型系统级别防止这种错误的发生。Dart 的安全类型系统区分了类型和非类型。...例如,String 类型的对象能为 null,而 String? 类型的对象可以为 null。...使用Dart安全主要涉及到两个方面:理解和非类型,以及如何处理可能为的值。 和非类型 在安全中,所有类型默认都是非的。...; // 非类型 String? nullableString = null; // 类型 处理值 当你处理一个可能为的值时,Dart 提供了几种方式来帮助你。例如,你可以使用 ??

20411

TypeScript 演化史 — 第一章】non-nullable 的类型

用联合类型构建空性 由于在启用严格的 null 检查时,类型在默认情况下是不可的,所以我们需要显式指定可为,并告诉类型检查器我们希望哪些变量为。...,类型中哪些成员是的变得很明显,并且可以自文档化。...Object 可能为 return s.length; } 在访问属性之前,需要使用类型保护来检查给定对象上的属性访问是否安全: function getLength(s: string...s.length : 0; } 使用类型的函数调用 如果试图调用包含 null 或 undefined 类型的函数,则会产生编译时错误。下面的callback 参数是可选的(注意?)...它们允许对哪些变量和属性可以为进行精确构建。只有在类型保护将属性访问或函数调用确定为安全之后,才允许进行属性访问或函数调用,从而避免了许多编译时的空性错误

2.4K20

类型声明与安全(Void Safety)

Kotlin 非类型/类型(NonNull/Nullable)声明 最开始时我们提到:在 Kotlin 中,不可能为的变量和可能为的变量被强行分开了。具体是怎么分开的呢?...这意味着如果一个变量的类型为 String,则他在任何时候都不可能为。 观察 string3 我们可以得出: 声明对象为 String? 类型,可以将其设置为。...Kotlin (Nullable)类型的调用 声明一个非变量,意味着你可以随意的调用他的方法而不用担心指针错误,相对应的,变量则无法保证了。...Kotlin (Nullable)的传递性 如果一个对象调用了方法,因为这个方法有可能不被执行,那么如果我们接收它的返回值,那么返回值的类型应该是什么呢?...所以,是具有传递性的。 双叹号由于在变量为时会抛出异常,所以它的返回值就还是为 Int,因为抛了异常的话,后面的代码已经不会被执行了。

99450

一文解决现代编程语言选择困难:命令式编程

const posts = fetchPosts(user); // 可能抛出异常return posts // posts 可能为值,这会再次导致异常。....开发人员必须操心如何手工释放和分配内存。我对使用非垃圾回收语言的经历记忆深刻,其中大量的缺陷在当前支持垃圾回收语言中轻易避免。...它们聚焦于类和对象,而忽视了消息传递。幸运的是,Erlang 和 Elixir 等一些现代编程语言找准了方向。...编写一个简单的 Java 程序可信手拈来,但是掌握如何编写可靠、维护的面向对象代码,则需要十数年的 Java 功力。...但使用不可为类型并非编程默认,也并非 TypeScript 的惯用做法。 错误处理 TypeScript 中,使用抛出和捕获异常处理错误

1.2K30

TypeScript 官方手册翻译计划【二】:普通类型

; } 当函数的某个参数有类型注解的时候,TypeScript 会对传递给函数的实参进行类型检查: // 如果执行,会有一个运行时错误!...稍后我们会看到更多的例子,了解到一个值所处的上下文是如何影响它的类型的。 对象类型 除了原始类型之外,最常见的类型就是对象类型了。它指的是任意包含属性的 JavaScript 值。...TypeScript 只关心我们传递给 printCoord 的值的结构 —— 它只关心这个值是否有期望的属性。...这种特点反映在 TypeScript如何为字面量创建类型的。...toFixed()); } 和其它的类型断言一样,非值断言也不会改变代码的运行时行为,所以切记:仅在你确定某个值不可能为 null 或者 undefined 的时候,才去使用 !。

2.2K20

分享 30 道 TypeScript 相关面的面试题

它对于确保在使用配置对象或在组件或函数之间传递数据等场景中的不变性特别有用。 11、TypeScript 中的区分联合有什么用处?...使用只读数组确保数组在创建后无法修改,这对于确保数据不变性特别有用,例如在函数或组件之间传递数据时。 16、TypeScript 中的 never 类型意味着什么?...,它允许读取位于连接对象链深处的属性值,而无需检查链中的每个引用是否有效。如果任何引用为 null 或未定义,则表达式会与未定义的值短路。 合并运算符 (??)...是一个逻辑运算符,当其左侧操作数为或未定义时返回其右侧操作数,否则返回其左侧操作数。这在您想要回退到默认值的情况下非常有用。 22、什么是映射类型,以及如何TypeScript 中使用它们?...23、您将如何TypeScript 中创建和使用 mixin? 答案:Mixin 是一种从重用组件创建类的模式。

71630

关于TypeScript中的泛型,希望这次能让你彻底理解

,在这种情况下它不会破坏应用程序,只是返回一个数组,但是这并不是我们希望的,我们希望编译器会提示属性不匹配的问题。...filterArrayByValue(users, 'notExistField', 'Vasya'); 让我们定义该函数的第二个参数,它将描述限定为只能为T类型的相关的属性 我们定义完后,发现在运行阶段之前提示传递错误的属性...给出的代码段展示了如何在React组件中使用 useState Hook来管理一个用户对象的状态,并提供了一个 setUserField 函数来更新用户对象的特定字段。...这样一来,如果你尝试传递一个不正确的字段或者错误类型的值给 setUserField 函数,TypeScript编译器会提供类型错误的提示,从而减少运行时错误的可能性。...这是React中使用TypeScript的一个典型例子,展示了如何通过类型系统来增强代码质量。

14410

一文搞懂TypeScript泛型,让你的组件复用性大幅提升

我们将深入探讨在TypeScript中使用泛型的方法,展示如何在函数、类和接口中使用它们。我们将会讨论如何传递默认泛型值、多个值以及条件值给泛型。最后,我们还会讨论如何为泛型添加约束。...一、TypeScript泛型(generics)是什么? 在TypeScript中,泛型是一种创建复用组件或函数的方法,能够处理多种类型。...四、为泛型传递默认值 在 TypeScript 中,我们可以为泛型传递默认类型值。这在某些情况下非常有用,例如当我们不希望强制传递函数处理的数据类型时。...我们为第二个参数添加了一个约束Keyextendskeyof Type,确保传递的键必须是对象类型中的一个有效键。 为什么要添加约束 添加约束可以帮助我们在编译时捕获错误,而不是在运行时。...通过具体的示例和详细的解释,我们展示了如何利用泛型创建灵活、复用且类型安全的代码。泛型不仅能帮助我们减少运行时错误的风险,还能显著提高代码的可维护性和可读性。

18210

干货 | 携程基于 GraphQL 的前端 BFF 服务开发实践

,即可能为。这就带来一个问题,code 为 1 表达存在错误时,data 也可能不为。从类型上,并不能保证,code 为 1 时,data 一定为。...表达非类型 在开发 GraphQL 服务时,有个非常容易疏忽的地方,就是忘记给非类型标记 !,导致客户端的查询结果在类型上处处可能为。 客户端判空成本高,对查询结果的结构也更难预测。...在 GraphQL 中,值处理有个特性是,当一个非字段却没有值时,GraphQL 会自动冒泡到最近一个的节点,令其为。...由于非类型的字段不能为,字段错误被传播到父字段中处理。如果父字段可能是null,那么它就会解析为null,否则,如果它是一个非null类型,字段错误会进一步传播到它的父字段。...假设我们有如下 GraphQL 接口设计: 其中,只有根节点 Query.parent 是的,其他节点都是非的。

2.6K20

【HormonyOS4+NEXT】TypeScript基础语法详解

这些特性使得TypeScript在大型项目中具有更好的可维护性和扩展性。本文将对TypeScript的基础语法进行详细讲解,帮助读者快速入门。...变量与类型 TypeScript的核心特性之一就是静态类型系统。这意味着在声明变量时,我们可以为其指定一个类型,这样TypeScript编译器就可以在编译时检查类型错误。...(注意:在TypeScript中,使用 {} 来表示一个对象类型,而 Object 实际上指向的是非原始类型) let person: object = { name: "Alice",...中,使用 {} 来定义一个对象类型可能更加精确,因为它不会接受原始值(如 string、number 等)。...然后,我们将 user 对象传递给 greeter 函数,并打印返回的问候字符串。

9910

如何在 React TypeScript 中将 CSS 样式作为道具传递

最近,它与 TypeScript 的结合变得越来越流行。由于 TypeScript 的静态类型检查和更好的 IDE 支持,它使得使用 React 更加容易和维护。...本文将介绍如何在使用 React TypeScript 时,将 CSS 样式作为道具(Props)传递给组件。...使用 CSS 模块化尽管使用道具是一个有效的方法,但是如果不小心将样式对象拼写错误,或者忘记将样式传递给子组件,就会导致不必要的错误。为避免这种情况的发生,我们可以使用 CSS 模块化技术。...总结本文介绍了如何在 React TypeScript 中将 CSS 样式作为道具(Props)传递给组件。我们首先创建了一个描述道具的接口,并且在 Button 组件中使用了这些道具。...React 和 TypeScript 的结合为开发者提供了更加维护、扩展的应用程序。结合本文所述的技术,可以帮助开发者更加高效地使用这个强大的技术栈来构建出色的用户界面。

2.1K30
领券