【问题标题】:Making typescript inheriting interface member optional?使打字稿继承接口成员可选?
【发布时间】:2017-01-18 14:53:37
【问题描述】:

所以说我有这个打字稿界面

    interface IOptions{
        name: string;
        dob: date;
        gender: string;
    }

然后我有另一个扩展它的接口

    interface ICustomOptions extends IOptions {
        height: number;
        weight: number;
        gender?: string;
    }

在第二个界面中,我希望原始界面中需要的成员在第二个界面中是可选的。有没有办法做到这一点而不必制作一个全新的界面?

【问题讨论】:

  • 这对于从界面中删除成员是有意义的,但这并不是我想要做的。是否将其作为可选而不是必需遵循相同的方法?
  • 我认为对于 Typescript - 是的 - 你不能在继承者中重新声明或修改基本接口属性。

标签: typescript interface


【解决方案1】:

为了遵循多态性规则,你需要接口可以替代它的基接口。

这很容易做到,只是您还没有完全确定基本接口-因为您说IOptions 是一种专业化,因为它需要性别...所以它需要与ICustomOptions 相同的基本接口.

interface ISimpleOptions {
    name: string;
    dob: number;
}

interface ICustomOptions extends ISimpleOptions {
    height: number;
    weight: number;
    gender?: string;
}

interface IOptions extends ISimpleOptions {
    gender: string;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2019-06-19
    • 2017-12-04
    • 2010-11-10
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多