布尔值与可选 true [关闭]

2023-12-26

描述可以处于“选中”或“未选中”状态的某些标志的更好方法是什么?

interface OperationResult {
    success?: true
}

interface OperationResult {
    success: boolean
}

建模类型的正确方法是尝试使用能够满足需求的最小类型。我的意思是,如果你有房产rank: string并且您知道排名只能从少数可能的选项中获得价值,那么更好的方法是替换更广泛的类型string进入包含这些选项的类型。这可以通过字符串文字或枚举来完成,请考虑 -rank: 'captain' | 'general' | 'major'。好处是,当您执行不同的行为时,因此与该字段相关的逻辑,然后您不使用魔术字符串,但是您在可以作为值的内容方面具有类型安全性,任何拼写错误都在这一点上不可能的。

让我们回到你的问题以及我的段落与此有何关系。

// 1 - custom union of two values belonging to different types
interface OperationResult {
    success?: true // type is true | undefined
}
// 2 - native union, type boolean
interface OperationResult {
    success: boolean // type is boolean = true | false
}

第二种更准确,因为它使用语言中现有的主要联合类型,因此我们使用最简单的可能选项 - boolean,它是具有两个可能值的类型。第一个选项还使用具有两个可能值的类型,但这是自定义联合。两种方法都是同构的(我们可以用另一种方法替换),因为显然关系是 -false表示为undefined and true表示为true。第一个选项并不优于第二个选项,它是相等的,但是引入第二个二进制类型而不是布尔值,这确实是不想要的,我的意思是没有理由这样做。

该方法的下一期true | undefined是每个使用布尔值的函数都不适用于这个新的联合。当然,未定义是虚假值,如果您将其放入if它会起作用,但在底层我们有类型强制,这实际上是不需要的,因为我们可以只使用具有相同属性的布尔值。

总而言之,如果您需要一个具有两种状态的数据结构,那么布尔型就是适合的工作,如果您有一个具有两个以上状态的结构,那么在这个级别上您应该将布尔型替换为不同的东西,例如总和类型。但没有理由用自定义二进制类型替换本机二进制类型。

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

布尔值与可选 true [关闭] 的相关文章

随机推荐

  • Javascript New Date() / UTC - GMT 跨浏览器

    问题 IE 10 IE 11 中 new Date 的不同格式 JavaScript IE 11 铬 var m new Date 2014 07 04T04 00 00 console log m Fri Jul 04 2014 06 0
  • Android Studio 错误:无法连接到守护进程

    我已经使用 AS 几个月了 但是两天后 当我尝试运行我的应用程序时 出现错误 Unable to run adb null C Users lapof AppData Local Android Sdk platform tools adb
  • 从命令行停止node.js程序

    我有一个简单的 TCP 服务器 用于侦听端口 var net require net var server net createServer function socket socket end Hello n server listen
  • Three.js,在网格之间共享 ShaderMaterial,但具有不同的统一集

    正如标题所说 我想为不同的网格重用给定的 ShaderMaterial 但为每个网格使用一组不同的制服 事实上 某些制服可能在网格之间有所不同 但不一定全部 这可能吗 在这种情况下 必须为每个网格创建完整的 ShaderMaterial 对
  • 覆盖hdfs目录Sqoop导入

    Sqoop导入时是否可以自动覆盖HDFS目录 而不是每次手动覆盖它 我们是否有像 overwrite 这样的选项 就像 hive 导入 hive overwrite 一样 Use delete target dir 它将删除
  • 如何在自定义指令中获取 ng-model 值

    我在这里搜索并尝试了我找到的答案 但我似乎无法从自定义指令的 ngModel 中获取模型值 这是指令 usage
  • 如何将 ASP.NET 与 Visual Studio 2008 结合使用

    从 VB 3 开始我就没有使用过 Visual Studio 现在正在尝试使用 ASP NET 看起来它应该能够连接到一个网站 通过某种类似 ftp 的协议 我认为 并允许编辑 而无需手动上传 下载文件 这是它应该的工作方式还是我误解了 我
  • 将焦点设置到 jQuery UI MultiSelect Widget 中的 Filter 输入

    我正在编写一个小脚本 它将焦点设置到多选 jquery 小部件的过滤器文本输入字段 根据文档 我可以像这样订阅小部件的单击事件 bind to event multiselect bind multiselectopen function
  • Angular 5:有条件地设置默认路由

    我有一个包含三个子菜单及其相应子路线的导航 现在 某些子菜单不可见 ngIf 具体取决于用户从服务器获得的声明 当单击主菜单时 我重定向到其中一个子菜单 但有时该子菜单无法访问 然后我想重定向到下一个同级菜单 path mymainmenu
  • MediaRecorder.stop() 与 Android 4.0 (ICS) 挂起

    打电话时stop 在我的视频捕捉活动中 软件有时会挂起并且无法恢复 只有通过点击 返回 来触发 ANR 才能让我终止该活动 在日志中 我看到以下行一遍又一遍地重复 W CameraSource YYYYY 等待传入摄像头视频超时 帧 XXX
  • JAX-RS 中等效的 Servlet init() 方法

    我正在开发一个在 Glassfish 上运行的应用程序 我应该使用 jax rs 和 jersey 将 servlet 转换为适当的静态内容 我一直在尝试寻找 init 方法的解决方法 但到目前为止我失败了 这是使用 servlet 的原始
  • 获取亚马逊 s3 存储桶大小的最快方法

    截至目前 我正在通过迭代所有对象并将单个对象的大小相加来计算亚马逊 s3 存储桶的大小 这是相当耗时的 我尝试并行操作并节省了一些时间 但即使这样也需要很多时间 我正在使用的系统 EC2 m1 large 是否有任何解决方法或更好的方法来找
  • 如何使用 Apache Commons 以多部分形式读取其他参数

    我有一个文件上传表单 正在发送回 servlet 使用多部分 表单数据编码 在 servlet 中 我尝试使用 Apache Commons 来处理上传 但是 我的表单中还有一些其他字段只是普通字段 如何从请求中读取这些参数 例如 在我的
  • 如何避免CodeIgniter中的SQL注入?

    有没有什么方法可以在配置文件中设置以避免SQL注入 我使用此代码来选择值 this gt db gt query SELECT FROM tablename WHERE var val1 这用于插入值 this gt db gt query
  • 在纱线集群上运行时引发 ClassNotFoundException

    my code import org apache spark SparkConf SparkContext object Run extends App val conf new SparkConf setMaster yarn clus
  • 如何保护用于让用户上传文件的文件夹的安全?

    我的 Web 服务器中有一个文件夹 供用户使用 ASP 页面上传照片 授予 IUSR 对该文件夹的写入权限是否足够安全 我必须确保其他东西吗 我担心黑客会绕过 ASP 页面 直接将内容上传到文件夹中 我在 Windows 2003 Serv
  • 原型有 hash.inspect() 方法。 jQuery 世界中的等价物是什么?

    我正在使用 jQuery 我正在处理 JSON 对象 并且需要一次又一次地查看数据 我做了警报 数据 但没有得到任何有用的东西 在原型世界中 他们有非常有用的检查方法 检查原型中的方法 http www tutorialspoint com
  • TensorFlow 2 自定义损失:“没有为任何变量提供梯度”错误

    我有一个图像分割问题必须在 TensorFlow 2 中解决 特别是 我有一个由航空图像及其各自的掩模配对组成的训练集 在蒙版中 地形为黑色 建筑物为白色 目的是预测测试集中图像的掩模 我使用带有最终 Conv2DTranspose 的 U
  • 从 UIImageView 中删除图像

    我加载一个UIImageView具有取决于用户交互的图像 当父视图最初显示时 没有选择任何图像 并且图像视图是黑色的 如果用户离开该视图并返回 图像仍然存在 我试过了 myImageView image nil 离开视图但图像仍然存在 我怎
  • 布尔值与可选 true [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 描述可以处于 选中 或 未选中 状态的某些标志的更好方法是什么 interface OperationResult success true i