打字稿覆盖深键

Posted

技术标签:

【中文标题】打字稿覆盖深键【英文标题】:Typescript override deep key 【发布时间】:2020-05-19 03:32:47 【问题描述】:

假设我有一个像这样的界面

interface Theme 
  a: 
    b?: 
      c: CustomType;
    
  
  ...

如何将此主题界面覆盖为新的主题界面,将 b 更改为始终定义? (删除?)显然我想保持其他一切不变。

编辑:我无权访问CustomType

【问题讨论】:

【参考方案1】:

试试这个:

type NewTheme = Theme & 
  a: 
    b: NonNullable<Theme['a']['b']>
  

Playground

【讨论】:

【参考方案2】:

因为parameter?: typeparameter: type | undefined 的简写,你可以override interface:

interface Theme1 extends Theme 
  a: 
    b: 
      c: CustomType;
    
  

【讨论】:

这不会删除所有其他主题属性吗? 另外我无权访问 CustomType 此方法保留所有其他theme 属性,但如果您无法访问CustomType,则不适合您。

以上是关于打字稿覆盖深键的主要内容,如果未能解决你的问题,请参考以下文章