繁体   English   中英

TypeScript:如何使属性以现有类型为条件?

[英]TypeScript: how to make a property conditional from an existing type?

所以假设我有

type Link = {
  text: string;
  link: string;
}

interface BigLink extends Link {
  some: number;
  something: string;
  else: string;
}

但我有一个共享所有这些属性的变量,除了链接属性可以是可选的。 我不想创建一个全新的类型只是为了将一个字段更改为link?: string 有没有办法做类似的事情

type OptionalBigLink = BigLink & { link?: string }

这样我就可以覆盖链接字段并使其成为可选。 ^ 当我不传入链接属性时,上面的代码仍然会抛出错误。

是的你可以。

type OptionalBigLink = Partial<Pick<BigLink, "link">> & Omit<BigLink, "link">;

操场上的一些测试

您可以使用OmitBigLink中删除该属性,然后进行交集。

type OptionalBigLink = Omit<BigLink, "link"> & { link?: string }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM