是否可以阻止创建类型别名的实例,例如一个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(使用前将#替换为@)