• 我打赌你以前从未使用过TypeScript的断言函数(译)


    详细了解未充分利用的 Typescript 功能

    最近,我遇到了一个我几乎从未使用过的 Typescript 功能,即使在使用该语言开发应用程序 4 年之后也是如此:断言函数。现在我了解了它们,感觉就像每个 Typescript 应用程序都应该使用它们!这就是为什么你应该亲自检查一下!

    在本文中,我们将探讨如何在 TypeScript 代码中实现断言,以及这样做的好处。

    -什么是TypeScript断言函数?

    您可以使用断言函数来验证条件并确保 TypeScript 中的假设。如果断言失败,代码会抛出运行时错误,帮助您发现潜在的编程错误。

    在 TypeScript 项目中使用此功能时,您可以:

    • 验证假设
    • 确保代码正确性
    • 在开发过程尽早发现错误

    -语法和用法

    语法涉及使用断言签名。

    让我们看下面的例子:

    function assertIsString(val: any): asserts val is string { if (typeof val !== "string") { throw new AssertionError("Not a string!"); } }

    这儿,assertIsString函数测试传入的变量是否为字符串,如果不是,则抛出错误。可以根据具体的使用情况创建不同类型的assert函数。

    -最佳实践

    为了充分利用断言函数:

    1.请策略性地使用它们来验证关键的假设,如果不满足这些假设可能会导致错误。

    2.根据您的应用程序要求创建特定的自定义断言函数。

    3.关注代码中潜在的痛点和容易出错的区域

    4.避免过度使用它们,因为它们会使代码更难阅读、维护。

    -使用案例

    断言函数在实际应用中很常见:

    • 用于验证函数的输入
    • 确保对象遵循特定的结构
    • 检查来自外部服务的结果

    让我们看一下展示实际示例的代码片段:

    function getUserAge(user: { name: string, age: number | null }): number { if (user.age === null) { throw new Error("User age is not defined"); } return user.age; }

    正如您所看到的,该函数正在检查用户对象是否具有年龄属性。

    如果不是,它会抛出错误并中断应用程序的执行。可以在 try/catch 块内使用 throw 语句:

    try { throw new Error("Something went wrong!"); } catch (e) { console.log(e); }

    通过以这种方式使用断言函数,您可以提高代码的可靠性、可维护性并简化调试过程。

    -总结

    在 TypeScript 中创建可靠且无错误的应用程序时,必须使用断言函数。通过遵循最佳实践并将断言函数与 TypeScript 相结合,您可以显着提高代码质量。我鼓励您查看 TypeScript 文档 并开始在项目中尝试使用断言函数。


    关于TalkX

    TalkX是一款基于GPT实现的 IDE智能开发插件,专注于编程领域,是开发者在日常编码中提高编码效率及质量的辅助工具,TalkX常用的功能包括但不限于:解释代码、中英翻译、性能检查、安全检查、样式检查、优化并改进、提高可读性、清理代码、生成测试用例等。

    TalkX建立了全球加速网络,不需要考虑网络环境,响应速度快,界面效果和交互体验更流畅。并为用户提供了OpenAI的密钥,不需要ApiKey,不需要自备账号,不需要魔法。

    TalkX产品支持:JetBrains (包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio)、HBuilder、VS Code、ProductId.

    PS:大家最关心的问题来咯!TalkX功能免费使用, GPT4的完美平替!


    参考文献

    *上述译文仅供参考,原文请查看下面链接,解释权归原作者所有

    • 文章:《I bet you never used TypeScript assert functions bef》
    • 作者:Abdelfattah Sekak
    • 发表日期:2023年8月11日*

    > javascript.plainenglish.io/how-you-can…

  • 相关阅读:
    FBX转换GLB格式
    Python连接MariaDB数据库
    速盾:使用 CDN 可以隐藏 IP 吗?该怎样应对防御?
    laravel生命周期超细腻
    逻辑漏洞挖掘
    Hive 和 HDFS、MySQL 之间的关系
    在HTML当中引入Vue控件,以element-ui为例
    QGIS编译(跨平台编译)之五十五:Qt Creator环境下libdxfrw库的pro文件
    SSL证书出错是怎么回事?是由哪些原因导致的?
    linux挖矿病毒kthreaddk横行,如何灭掉它?
  • 原文地址:https://blog.csdn.net/TalkX/article/details/132674702