如何以一种固态的方式简化状态相关的

如何以一种固态的方式简化状态相关的

我有一个使用类型的角度组件,什么是在一个案例中获取一个数据而在另一个案例中获取另一个数据的易读解决方案?

该组件也可以分为两个组件,电话组件和电子邮件组件,但是大多数逻辑(尽管很小)将被复制。

var getContactInfo, hasContactInfo;
if(type === 'email') {
    getContactInfo = function (profile) {return profile.getEmail()};
    hasContactInfo = function (profile) {return profile.hasEmail()};
} else if(scope.type === 'phone') {
    getContactInfo = function (profile) {return profile.getPhone()};
    hasContactInfo = function (profile) {return profile.hasPhone()};
}

最佳答案

我可能会根据类型使用对象映射方法:

const buildContactInfo = (getContactInfo, hasContactInfo) => ({ getContactInfo, hasContactInfo });

const contactInfoByType = {
  email: buildContactInfo((profile) => profile.getEmail(), (profile) => profile.hasEmail()),
  phone: buildContactInfo((profile) => profile.getPhone(), (profile) => profile.hasPhone())
};


然后,在调用时:

const contactInfo = contactInfoByType[type];
if (!contactInfo) {
  throw new Error(`No contact info matched type '${type}'`);
} else {
  contactInfo.hasContactInfo(profile);
  contactInfo.getContactInfo(profile);
}

关于javascript - 如何以一种固态的方式简化状态相关的 setter/getter ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43894551/

10-11 11:13