typescript - 防止创建类型别名实例

标签 typescript

是否可以阻止创建类型别名的实例,例如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 实例,您可以确定它已被验证。使用类我会将构造函数设为私有(private)。

最佳答案

Is it possible to prevent this somehow

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

const impostor = invalidData as unknown as ValidatedEmail;

关于typescript - 防止创建类型别名实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70203643/

相关文章:

javascript - 类型 'string' 不可分配给类型 'never'

typescript - 有没有办法阻止子类覆盖 typescript 中的方法?

html - 将存储的包含 html 标签的字符串转换为 html 文本格式

javascript - 使用 Service 从 JSON 读取特定 key

typescript - 如何使用 Jest 模拟封装在服务类中的 winston 记录器实例

javascript - 如何将用户关键字添加到 VS2013 TypeScript 语言文本编辑器?

typescript - 是否可以从 Typescript 字符串联合创建对象?

javascript - Angular2 同级元素选择器

Angular2 组件无法通过服务中的 observable 进行通信

angular - HTTP post 405 方法不允许