如何允许函数返回类型未定义

2024-04-20

我认为typescript有很多不明显的地方,使得它不严格也不正确。

我想使用 undefined 作为函数返回类型。因为实际上它是未定义的,不是 void 或其他虚构类型。但是当我写下这个:

function myFunction(): undefined {
    
}

它说“声明类型既不是‘void’也不是‘any’的函数必须返回一个值”。

一定不能。而这一点大家都可以验证。我不想同意“无效更好,我们决定承诺等于未定义”等等。并且不想写return undefined,如果它是明显且多余的。

如何让它在这个例子中工作?可能存在一些标志或一些“奇迹评论指令”?

这是用例,解释了为什么我想要显式未定义:

正确的示例和解决方案 https://www.typescriptlang.org/play?#code/FDBmFcDsGMBcEsD2kAEBnRBbApgQTQJ4wBiUcSkAFAJQBcKACgE5bxrYA8AbovACYA%20FAG9gASCbZY4JqkjYA7oxaY22SjXo9%20KALxDRYse1gAVeDkThYG6vsNHYACxZKAokxZNKAcgAyiIgA1igAhrAo0MgYADbYAHQouDExKAAOLNDYaGgobCiw2EyqkOHYfCgAtChkoeAA5k4R2AAeWWkIyPE%201ADc4mIAvgA0KACMAAxTKH3ig7ODIAD0SygA4oEVMfAARkyhTARgZJ2oGDh%20u-uHAMqhBGgAkrAASlIykGgAarx8lCgQSD0Gj6FDaCp0MG-ETiSTSWQAqA0fqLY4wU4oTAEUjoiiaGqQPjYUDweQVYQoFYoDiVWkoAByiCUjzCmHQMmwo2c4TyEXyrVCcBiBAJRJJZMSAHVHvSUJQxtQUABCFWq1XiKkACSK2BQLOcpJC3OaXCKBANkHqeVyAHkANKjJw6vUoOEfKH8WHvBHg9BYbCXPYHAh3B7PN7wz4-fj-c54QgkE4UGa9SmrGl0xnMlAKeApHNMeCFSKITzYOCu72QKUyuUAJkVaqbwFRVIAwshYPsK9gAI7gUKpWCITHYpPINHkZBhSCIZxFACyY9xyElRacpidaDuOA7kC7gpskKgYtJ5RhYipjMrkcSbhah9FxLPfHiLeWq21khd0FCkB8ERRPuLBDgQaTZKMRbWigs4RFiJZEjOFQsnwyAASgQSzkoChODy%20Skmg-DYJOGJxoG1wEP8Bz1MCdhCL6kKQOAmA7EUF7wKA-ywGB2CIKAYRMPUNB6LougoD4iA7AAVuWsA%20DMDhugi9KhPSqZUjc4HQPAg6YqE9TwNAIRQJhTKoL%207BzCAEhVuMdYAMwoiAcQRH%20BA2qApgKIgOJTp8Lx-qhmC0aCJ7PmSegznOTpMEuvmnGuzibtkO7YHuB5wP0wAuSgLT0ExLFsWJZFXMGVGQO5nnefFFBoAFhJYCmabUrS1S0MAV5Mi6oRsmgHJcrhEQGrk2xBocOZ5qk9RSE%204rnqEoCFEwAn1Mx2D7pEg4xMMHWrCy0BOkZBROPkyC6ggOBIRN%20byKay3Ta5qBsH1uqksduoQPCCS7Sg0qypQ9mNk26rAEBsQJDEiBCS0swgHDQA


您希望编译器接受其返回类型注释包括的函数undefined可以隐式返回undefined当代码路径没有明确的return陈述。这是一个合理的愿望,但正如您所注意到的,从 TypeScript 4.1 开始,该语言目前不具备此功能。有一个开放的功能请求,位于微软/TypeScript#36288 https://github.com/microsoft/TypeScript/issues/36288.如果您想增加发生这种情况的机会,您可能需要去那里给它一个????,甚至可能描述为什么您的用例需要这个或者为什么您的代码会从中受益。

但实际上,除非你能让大量其他人大声疾呼这个问题,否则看起来没有任何语言维护者认为它是一个高优先级。

您可能不喜欢这些解决方法,但无论如何它们都在这里。首先,明确包含一个return声明(有或没有undefined):

function myFunctionReturn(): undefined {
    return; // okay
}

其次,使用错误抑制注释之一,例如//@ts-ignore https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-6.html#suppress-errors-in-ts-files-using--ts-ignore-comments or //@ts-expect-error https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#-ts-expect-error-comments:

//@ts-ignore
function myFunctionIgnore(): undefined {

}

可能还有其他方法来处理它,但没有最小可重复示例 https://stackoverflow.com/help/minimal-reproducible-example您的用例consume or use such undefined-返回函数,很难知道如何将其与void-返回您反对的函数。

Playground 代码链接 https://www.typescriptlang.org/play?target=7#code/GYVwdgxgLglg9mABAWwJ4DFzXmASgUyhACcwAKASgC5FwATfYGMfOxAbwFgAoRPxYoRJgA3IgD04xHADWAQ1Q8Avjx6SAAlADOAWhgBzMHEE9QkWAhQYsFsAElDx-JRr1GzVh1XclQA

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何允许函数返回类型未定义 的相关文章

随机推荐

  • 使用 github 操作缓存 npm 依赖项

    我想缓存 npm 依赖项 这样我就不会每次推送时都执行 npm install 而是从缓存加载它 我认为 github action 现在支持这个了吗 如何缓存 GitHub 操作中的步骤 https stackoverflow com q
  • 如果阈值不够好,如何检测 opencv (c++) 中的异常?

    我有这样的灰度图像 I want to detect anomalies on this kind of images On the first image upper left I want to detect three dots on
  • ASP.NET MVC 3 OnActionExecuting 导致无限循环

    我有重写的 OnActionExecuting 方法 如果用户登录 则在操作执行之前检查 public class AuthenticationAttribute ActionFilterAttribute public override
  • 在设计时获取文件的相对路径

    我正在构建一个 Windows Phone 8 应用程序 在设计时 我加载示例 XML 文件来获取示例数据 它运行良好 但我想使用相对于解决方案根目录的文件路径 以便它可以适用于具有相同代码的所有开发人员 这是我当前的代码 var path
  • 是否可以在 Golang 中创建类型通用(模板)函数

    我是新手 只是玩玩它 但我已经编写了一个命令行工具 我调用了大约 30 个不同的函数return x err 在每种情况下 如果出现错误 我想做的只是恐慌 基本上一切都完美运行 或者整个事情都失败了 我知道有template Must t
  • 底部渐变边框

    根据CSS 技巧 http css tricks com examples GradientBorder 以下 CSS 语法将导致左边框渐变 left to right border width 3px 0 3px 3px webkit b
  • “gcloud deploy”抱怨同时拥有 .gcloudignore 和skip_files,尽管我两者都没有

    我正在尝试将 Django v2 1 应用程序部署到 App Engines Python37 运行时 这是我的app yaml这是取自谷歌示例 https github com GoogleCloudPlatform python doc
  • 自定义 Applescript 应用程序图标

    我已经创建了我的苹果脚本 https en wikipedia org wiki AppleScript 对其进行了测试 将其另存为 app 并且可以正常工作 现在 如何为其设置自定义图标 我做了一些谷歌搜索并尝试了一些不同的事情 但无法让
  • ionic-Angular Components.core.scss 错误

    刚从 Ionic 2 开始 我的第一个应用程序失败并出现错误 错误 导入指令不能在控制指令或混合中使用 在node modules ionic angular components core scss的第34行 import 字体 离子图标
  • 如何从数据库获取连接字符串

    我已经使用 SQL Server Management Studio 创建了一个数据库 现在我想在我的 C 应用程序中使用它 我需要连接字符串吗 我在哪里可以找到连接字符串 我的数据库存储在哪里 我是否必须发布它或类似的东西 或者它在我的文
  • PHP __halt_compiler 未找到

    我正在使用 PHP 5 6 运行本地服务器 我正在使用使用该函数的第三方库 halt compiler 一旦达到此功能 我会收到以下错误 PHP 致命错误 未捕获异常 UnexpectedValueException 消息 phar 内部损
  • 从 URL 解析域

    我需要构建一个从 URL 解析域的函数 So with http google com dhasjkdas sadsdds sdda sdads html or http www google com dhasjkdas sadsdds s
  • 在打字稿中扩展角度全局对象

    我正在使用 Angularjs 和 Typescript 我想使用如下自定义函数来扩展 Angular 对象 angular executeAfterDigest function 我该如何去做这件事呢 我怀疑我需要以某种方式扩展 IAng
  • Omnipay 如何添加新网关

    有谁知道如何向 Omnipay 添加新的支付网关 我读了博客https groups google com forum topic omnipay j7OeQQSB95A https groups google com forum topi
  • Xcode 找不到 cstddef

    由于某种原因 Xcode iOS 无法找到我正在使用的库 Boost 的 cstddef 有谁知道如何解决这一问题 我正在 Mac OS X 10 8 下使用 Xcode 4 6 进行编译 你应该让你的项目全部为 Objective C 将
  • 如何处理Android应用程序中标记的双击

    我在地图上显示车辆 当我单击车辆时 它会显示信息窗口 但我需要双击车辆 然后它会转到新页面 我不知道该怎么做 请帮助我 这是我的代码 public class MapsActivity extends FragmentActivity im
  • 如何将其制作为左/右滑动 div

    下面提供的是我的 html 和 css 代码的片段 我不仅需要在 html 和 css 中添加 而且还需要在 javascript 中添加什么 才能使其以滑入 滑出的方式工作 向右打开 和 左关闭 div div a href Edit P
  • 创建后缀号码球拍

    我正在尝试在 Racket 中试验我可以做的事情 并且我想在数字后加上字母 对于这个例子 我只想代表10000 as 10K and 1000000 as 1M 有没有办法 用宏或其他方式 我可以扩展1M to 1 1000000 或者有什
  • 如何模块化(大型)Java 应用程序?

    我手头有一个相当大的 几个 MLOC 应用程序 我想将其拆分为更易于维护的单独部分 目前该产品由大约 40 个 Eclipse 项目组成 其中许多项目具有相互依赖性 仅此一点就使得连续构建系统变得不可行 因为每次签入都必须进行大量重建 有没
  • 如何允许函数返回类型未定义

    我认为typescript有很多不明显的地方 使得它不严格也不正确 我想使用 undefined 作为函数返回类型 因为实际上它是未定义的 不是 void 或其他虚构类型 但是当我写下这个 function myFunction undef