【问题标题】:How to create an optional interface?如何创建可选接口?
【发布时间】:2021-02-16 08:57:58
【问题描述】:

我有这种情况:

interface IRenderComponent {
  urlToHideAt?: string;
  links?: IInternalNavbarLink[];
  currentLink?: IInternalNavbarLink;
}
const renderComponent = ({ urlToHideAt, links, currentLink }: IRenderComponent) => {

这有点道理。我将所有子项设置为可选,但这样做时,每次尝试使用该功能时都会出错,

预期 1 个参数,但得到 0.ts(2554)

这是有道理的。我将道具设置为可选,而不是唯一的参数。

那么,我的问题是如何将整个参数 { urlToHideAt, links, currentLink } 设置为可选。我如何做到这一点?

【问题讨论】:

    标签: javascript typescript types


    【解决方案1】:

    你可以使用default parameters:

    const renderComponent = ({ urlToHideAt, links, currentLink }: IRenderComponent = {}) => {}
    

    如果调用者没有传递第一个参数,则默认为{},这是一个有效的IRenderComponent,而urlToHideAtlinkscurrentLink都将是undefined。 ({}.links === undefined)

    【讨论】:

      【解决方案2】:

      你不能使接口成为可选的,但你可以给ˋrenderComponentˋ的第一个参数赋予一个默认值,使它成为可选的:

      const renderComponent = ({ urlToHideAt, links, currentLink }: IRenderComponent = {}) => {
          // Do something
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-18
        • 1970-01-01
        • 2016-02-26
        • 2014-06-17
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多