0

Let's say I have an interface like this one

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

how do I override this theme interface into a new one changing b to always defined?? (Removing ?) obviously I'd like to keep everything else the same.

EDIT: I don't have access to CustomType

Leonardo Drici
  • 749
  • 3
  • 11
  • 32

2 Answers2

1

Try this:

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

Playground

Shalom Peles
  • 2,285
  • 8
  • 21
0

Because parameter?: type is a shorthand for parameter: type | undefined you can override interface:

interface Theme1 extends Theme {
  a: {
    b: {
      c: CustomType;
    }
  }
}
Masih Jahangiri
  • 9,489
  • 3
  • 45
  • 51