TypeScript 中未检查“void”返回类型 – 防止浮动承诺?

2024-03-21

在 TypeScript 3.9.7 中运行,这与编译器无关:

const someFn: () => void = () => 123;

我发现这个答案 https://stackoverflow.com/a/12763878/2072165,这说明这是设计使然。我在某种程度上理解了它背后的原因(基本上,在将函数作为参数传递时,您应该能够忽略返回类型)。

但从 Promise 来看,故事就变得不同了:

const someFn: () => void = () =>
  new Promise((resolve, reject) => reject(Error('onoez')));
someFn();

我正在检查我的代码eslints @typescript-eslint/no-floating-promises规则以避免未处理的承诺拒绝。在上面的脚本中,由于 linter 认为someFn不返回任何内容,它不会警告我。

这是我必须忍受的事情吗?如果一个函数接受一个() => void输入回调,并且我向它传递一个异步函数,编译器不会警告我,并且糟糕的事情将开始发生。我能以某种方式避免这种情况吗?


返回类型为void意味着打字稿不会让你使用返回值,无论它是什么。但正如您所注意到的,这并不妨碍退回某些东西。你不会改变这种行为。

() => void意味着你不关心返回值是什么,因为你不打算使用它。但是,在这种情况下,你确实关心。

So you can声明一个强制不返回的函数类型any使用返回类型的值undefined.

const someFn: () => undefined = () =>
  // Type 'Promise<unknown>' is not assignable to type 'undefined'.
  new Promise((resolve, reject) => reject(Error('onoez')));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 中未检查“void”返回类型 – 防止浮动承诺? 的相关文章

随机推荐

  • 可利用的 C# 函数 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这个问题类似于可利用的 PHP 函数 https stackoverflow com questions 3115559 exploi
  • Kendo UI 绑定弹出编辑器中的下拉值

    我有一个 Kendo 网格 它可以选择使用弹出编辑器添加新记录 弹出编辑器中的一个字段是 DropDownList 当我打开弹出编辑器时 我从下拉列表中预先选择了第一条记录 由于我预先选择了它 我希望它在网格内自动创建 绑定 当按 更新 时
  • Python 会缓存重复访问的文件吗?

    我想知道 Python 是否足够聪明 可以缓存重复访问的文件 例如当使用 pandas 读取相同的 CSV 或多次 unpickle 相同的文件时 这是否是 Python 的责任 还是应该由操作系统来处理 不 Python 只是一种语言 它
  • Snakemake - 如何使用文件的每一行作为输入?

    我需要使用文件的每一行tissuesused txt作为snakemake中并行规则的输入 我想总共大约有 48 个工作机会 for line in cat tissuesused txt do echo Sorting line phen
  • 如何与具有哈希属性的 Perl 对象交互?

    我有一个包含多个变量的类 其中一个是散列 runs sub new my class name my self name gt name runs gt times gt bless self class return self 现在 我要
  • 无法访问VueJS中的根数据

    这是我在 stackoverflow 上的第一篇文章 如果我做错了什么 请提前抱歉 我的问题 我已经设置了一个 VueJS 项目 并且正在尝试从另一个组件获取放入 App vue 中的数据 为此 我使用 this root count 为例
  • 带条件的 LINQ to SQL 急切加载

    我正在尝试学习 LINQ to SQL 并且发现了 LoadWith 函数 我找到的所有示例都会加载您在 LoadWith 函数中指定的表中的所有记录 例如 var dlo new DataLoadOptions dlo LoadWith
  • 在 IMAP 收件箱中搜索来自特定发件人的邮件并使用通配符?

    是否可以使用通配符在 IMAP 文件夹中搜索特定发件人 typ data M SEARCH None from security website IMAP RFC 3501 6 4 4 https www rfc editor org rf
  • 如何在 C# 6.0 中实现 INotifyPropertyChanged?

    答案是这个问题 https stackoverflow com questions 1315621 implementing inotifypropertychanged does a better way exist 1316417 13
  • 仅使用 javascript 将信息提交到 Google Drive 电子表格

    我基本上正在寻找一种仅使用 javascript 将信息提交到 Google Drive 电子表格的方法 更改特定单元格的值就是我所追求的 有人知道这是否可能吗 谢谢 这是在本地主机中工作的正确代码 就像在网站中一样 如果您有适当的客户端
  • Kafka Connector 的任务列表为空

    在卡夫卡启动后 有时我会出现这种行为 并非总是如此 似乎是随机的 org apache kafka connect runtime rest errors ConnectRestException Internal request miss
  • 在导航抽屉 Android 上添加 EditText

    我正在开发一个带有导航抽屉的新应用程序 使用 Android 模板 但我想用其他视图替换默认的列表视图 SOLVED 我必须编辑 java 代码来修改 createView 方法以与我的布局匹配 谢谢大家 问题 我的班级从ActionBar
  • 如何使用 Rustup 删除 Rust 编译器工具链?

    Rustup 文档展示了如何每晚安装 Rust https github com rust lang nursery rustup rs working with nightly rust 但不知道如何删除它 虽然文档确实显示了如何卸载ru
  • ArrayList 与通用集合

    在 NET 2 0 中使用 ArrayList 代替泛型集合有何优缺点 通用集合是类型安全的 你不能将string into a List
  • 核心数据 - 基本问题

    我想知道以下内容在 Objective C 中是如何工作的 在我的头文件中 我有以下内容 它是从不同的视图控制器初始化的 interface UserLookup UIViewController NSManagedObjectContex
  • 如何实现设备端CUDA虚拟功能?

    我发现 CUDA 不允许将具有虚拟函数的类传递到内核函数中 对于这个限制有什么解决方法吗 我真的很希望能够在内核函数中使用多态性 Thanks 罗伯特 克罗维拉评论中最重要的部分是 只需在设备上创建对象即可 所以记住这一点 我正在处理我有一
  • jQuery UI 和分割器

    使用 jQuery UI 我如何使用类似 Splitter 的功能http methvin com splitter 3csplitter html http methvin com splitter 3csplitter html 我问这
  • 如何同时运行不同版本的node.js?

    我已经为我的 cloud9 应用程序安装了节点 v0 8 25 并且我想在节点 v0 11 2 上进行开发 那么我可以在 v0 8 上运行 cloud9 并在 Ubuntu 上的 v0 11 2 上运行我的程序吗 我用的是nvm Thank
  • 带有 Google Apps 脚本的 jQuery UI

    是否可以将 jQuery UI 小部件与 google apps 脚本应用程序一起使用 我有一个文本框 我想在上面使用日期选择器 是的 您可以将 JQueryUI 与 Google Apps 脚本一起使用 我建议您查看示例代码 您无需执行任
  • TypeScript 中未检查“void”返回类型 – 防止浮动承诺?

    在 TypeScript 3 9 7 中运行 这与编译器无关 const someFn gt void gt 123 我发现这个答案 https stackoverflow com a 12763878 2072165 这说明这是设计使然