打字稿覆盖深键

时间:2020-02-03 11:20:20

标签: typescript typescript-typings typescript-generics

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

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

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

编辑:我无权访问CustomType

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

Playground

答案 1 :(得分:0)

因为Window window = this.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); <activity android:name=".IncomingCallActivity" android:excludeFromRecents="true" android:noHistory="true" android:screenOrientation="sensorPortrait" android:showOnLockScreen="true" android:showWhenLocked="true" android:turnScreenOn="true" /> parameter?: type的简写,所以您可以override interface

parameter: type | undefined