打字稿覆盖深键

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,则不适合您。

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

如何覆盖打字稿中的属性?

是否可以用打字稿覆盖不同 typeNum 的模板?

typescript Ionic 1(Angular 1.x)后退按钮覆盖 - 打字稿版本

如何覆盖从打字稿中其他文件导入的功能?

在 sonarqube 中使用 jest 和旁观者覆盖组件方法的 Angular 打字稿测试

如何在打字稿中对模型接口进行单元测试?