是否可以阻止创建类型别名的实例,例如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/