0

我有一个具有以下类型设置和使用的应用程序。

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;
}

不过,我觉得我有问题。整个系统的工作方式与更改前一样,但我只想检查是否真的有办法绕过公司创始人收到两次的事实,因为它扩展了董事和员工nameage

只是为了让服务器端/后端开发人员参与进来,这里是 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()两次,因为它同时实施了董事和员工。

任何人都可以帮助解决这个问题吗?

4

1 回答 1

1

导演为什么不发工资?董事是雇员,而雇员自然是人。

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

public interface CompanyFounder : Director {
    string GetReasonStartedCompany();
}
于 2021-12-09T12:22:08.093 回答