网站搜索

c# - 使用多重接口继承时的 Typescript 名称冲突/碰撞


如果在 Typescript 中,我有两个接口,它们都有一个同名的成员,我如何安全地实现这两个接口?这甚至可能吗?

示例:

interface IFace1 {
    name: string;
}
interface IFace2 {
    name: string;
}

class SomeClass extends IFace1, IFace2 {
    // How to implement IFace1.name and IFace2.name ??
}

我知道在 C# 中这是可以解决并且有效的,因为 C# 在运行时拥有类型信息,但 TypeScript 呢?

答案#1

TypeScript 使用结构化类型系统,所以 IFace1 和 IFace2 完全没有区别。你可以这样实现它们:

class SomeClass implements IFace1, IFace2 {
    name = 'foo';
}

正如 vcsjones 所提到的,因为没有运行时类型信息,因此在名义上没有可行的方法使其工作。