Принцип разделения интерфейсов Проблема, когда один интерфейс наследует два интерфейса, которые имеют одного и того же родителя.

У меня есть приложение со следующими настройками и используемыми типами.

      type CompanyFounder {
    name: string;   
    age: number;
    salary: number;
    sharesHeld: number;
    getReasonStartedCompany: string;
};

type NonExecDirector = {
    name: string;   
    age: number;
    sharesHeld: number;
    string[]: getExternalStuff;
};

Мне было поручено добавить новый тип:

      type Person = {
    name: string;   
    age: number;
};

Я решил, что могу улучшить код и уменьшить количество повторяющихся полей в связанных типах, используя принцип разделения интерфейса. Вот что я придумал:

      type Person = {
    name: string;   
    age: number;
};

interface Employee extends Person {
    salary: number;
}

interface Director extends Person {
    sharesHeld: number;
}

interface CompanyFounder extends Director, Employee {
    getReasonStartedCompany: string;
}

interface NonExecDirector extends Director {
    string[]: getExternalStuff;
}

Однако я думаю, что у меня проблема. Вся система работает так же, как и до изменения, но я просто хочу проверить, есть ли на самом деле способ обойти тот факт, что основатель компании получает name а также age дважды, потому что он расширяет и Директора, и Сотрудника.

Просто чтобы привлечь людей из разработчиков серверной части / серверной части, вот та же проблема в примере C #

      public interface Person {
    string GetName();   
    int GetAge();
}

public interface Employee : Person {
    int GetSalary();
}

public interface Director : Person {
    int GetSharesHeld();
}

public interface CompanyFounder : Director, Employee {
    string GetReasonStartedCompany();
}

public interface NonExecDirector : Director {
    string[] GetExternalStuff();
}

Итак, проблема в том, что учредитель компании получает GetName() а также GetAge() дважды, потому что он реализует и Director, и Employee.

Кто-нибудь может помочь с этой проблемой?

1 ответ

Почему директор не получает зарплату? Директор – это сотрудник, который в свою очередь, естественно, является человеком.

      public interface Director : Employee {
    int GetSharesHeld();
}

public interface CompanyFounder : Director {
    string GetReasonStartedCompany();
}
Другие вопросы по тегам