防止创建类型别名实例

2024-01-08

是否可以阻止创建类型别名的实例,例如一个ValidatedEmail?

type ValidatedEmail = { address: string; validatedOn: Date }

假设有一个函数validateEmail和一个函数sendEmail.

const validateEmail = (email): ValidatedEMail => {...}
const sendEmail = (email: ValidatedEmail) => {...}

我可以创建一个无效的实例ValidatedEmail像这样并将其传递给sendEmail:

const fake = { address: 'noemail'; validatedOn: new Date() }

是否可以在不使用类的情况下以某种方式防止这种情况?

更新:我想防止有人可以创建一个实例ValidatedEmail没有实际验证电子邮件并且如果您得到一个实例ValidatedEmail您可以确定它已被验证。使用类我会将构造函数设为私有。


是否有可能以某种方式阻止这种情况

在类型系统中这是不可能的。永远有效的简单食谱:

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

防止创建类型别名实例 的相关文章

随机推荐

  • 如何将 Google One Tap 登录与 django-allauth 集成?

    如何将 Google One Tap 登录体验与 django allauth 集成 django allauth 是集成的 非常适合简单的用户名 密码登录 我拥有 Google OneTap 更好的用户体验 可以识别用户经过身份验证的 G
  • 从 Leaps regsubsets 获取所有模型

    我使用 regsubsets 来搜索模型 是否可以自动创建所有lm从参数选择列表中 library leaps leaps lt regsubsets y x1 x2 x3 data nbest 1 method exhaustive su
  • 如何将 json 编码的 PHP 数组转换为 Javascript 中的数组? [复制]

    这个问题在这里已经有答案了 我正在使用 AJAX 从 PHP 文件中获取 JSON 编码的数组 但在 JavaScript 中我需要将其用作数组 如何在 Javascript 中创建数组 我对 PHP 文件的 AJAX 调用 ajax ty
  • 如何在 Spinner 中选择项目并将其用作字符串?

    只是想看看我是否可以找出如何在微调器中选择项目并将其存储在字符串中 我已经看到了有关此问题的其他帖子 人们说将此行放入代码中 在我在下面发布的代码的最后一行下面 String Genders Gender getSelectedItem t
  • 将代码分配给动态创建的按钮

    我正在尝试获取一个在 Excel 用户表单上动态创建的按钮来运行名为的宏transfer我写过的Module 1我的项目的 模块 部分 下面我将迄今为止编写的代码粘贴到用户窗体中 该窗体实际上设法创建了Transfer to Sheet框架
  • “创建用户”怎么写?使用 MySQL 准备好的语句

    I tried SET user foo localhost SET pass bar SET sql CREATE USER IDENTIFIED BY PREPARE stmt FROM sql 我得到错误 ERROR 1064 420
  • FastAI lrfind()方法无法正常工作

    Update 1 我根据 无论坡度如何 你都希望从该点返回 10 倍 更新了我的 lr 并将其设置为 max lr 切片 1e 3 1e 2 这就是我得到的 和情节 这是什么意思 正如您在第二张图中看到的那样 从 1e 08 开始损失就非常
  • 为什么 JUnit 中不推荐使用assertEquals(double,double)?

    我想知道为什么assertEquals double double 已弃用 I used import static org junit Assert assertEquals 我使用的是 JUnit 4 11 下面是我的代码 import
  • 返回指向本地结构的指针

    我看到一些具有如下结构的代码示例 type point struct x y int func newPoint point return point 10 20 我有 C 背景 这对我来说似乎是错误 这种构造的语义是什么 新的点是分配在栈
  • 在行内插入表格

    我编写了一个包含两个表的脚本 tbl1是一个主表 tbl2是我想插入到的第二个表tbl1第二行使用纯JavaScript 它工作完美 但是我的tbl2有一些html attribute 插入后看到代码时没有看到 note tbl1 and
  • 如何用 PHP 解析 phpDoc 风格的注释块?

    请考虑以下代码 我尝试仅解析文件中的第一个 phpDoc 样式注释 不使用任何其他库 出于测试目的 将文件内容放入 data 变量中 data file A lot of info about this file Could even co
  • 为包含集合的对象实现 GetHashCode()

    考虑以下对象 class Route public int Origin get set public int Destination get set 路由实现相等运算符 class Routing public List
  • 术语“Update-Database”未被识别为 cmdlet 的名称

    我正在使用 EF5 beta1 虽然我之前能够运行 更新数据库 现在我关闭了 Visual Studio 我无法让它运行 我收到以下错误 术语 更新数据库 不被识别为 cmdlet 函数 脚本文件或可操作程序的名称 检查名称的拼写 或者如果
  • 解释 sed、grep 和 cut 语法

    我正在分析一个批处理文件 其中有一行编辑文本文件 输入 并制作 txt 文件 输出 该批处理使用三个帮助tools exe grep sed and cut 我尝试阅读他们的使用手册 但这并不容易 该行是 type input txt se
  • 带有“-std=c++0x”的“#include ”已损坏

    如果我指定 std c 0x到 g 那么我不能 include
  • CSS 性能和实现较少

    将 LESS 用于 CSS 的最佳方法是什么 基本上 开发人员应该编写一个 Less 文件 然后将其编译用于生产 我应该链接 LESS 代码和 javascript 文件吗 或者我应该完全跳过 LESS 路线并重新制作课程 我正在尝试将一些
  • 如何使用 HTML 父子关系中的 2 个 Svelte 组件将数据从子级传递到父级

    我是 Svelte 的新手 我在 HTML 父子关系中有 2 个 Svelte 组件 而不是 Svelte P C 关系 其中 1 个 Svelte 组件导入另一个组件 最终 我想要这样的东西 可能有很多 Accs
  • 如何在elasticsearch中使用Query DSL找到最近/最近的数字

    我正在寻找在弹性搜索的帮助下找到最近的价格 号码的可能性 问题是我没有范围 我想要实现的是结果按最近距离排序 根据示例搜索查询 我的索引包含 3 个文档 其价格 数字 如下 45 27 32 对于给定数字 距我的搜索值 29 的 距离 是
  • 谷歌搜索网络抓取与Python中的关键字列表

    我正在尝试通过使用名称列表作为输入并在 DataFame 中获取数据集来在 Google 搜索上进行网络抓取 我之前使用 selenium 进行网页抓取 但我在构建语法时遇到了困难使用循环运行名称列表作为输入得到结果并scrape每一页 下
  • 防止创建类型别名实例

    是否可以阻止创建类型别名的实例 例如一个ValidatedEmail type ValidatedEmail address string validatedOn Date 假设有一个函数validateEmail和一个函数sendEmai