javascript - Finns det en motsvarighet till Spread-operatorn i TypeScript för användning med gränssnitt?


Jag arbetar på ett JavaScript-projekt och skulle vilja använda TypeScript också. I ett scenario skulle det vara trevligt om jag kunde minska mängden upprepning i detta gränssnitt:-

interface Question {
  settings: {
    label: string
    description: string
    hidden: boolean
    followUp: {
      label: string
      description: string
      hidden: boolean
    }
  }
}

Om det fanns någon slags spridningsoperator skulle det vara fantastiskt:

interface QuestionSettings {
  label: string
  description: string
  hidden: boolean
}

interface Question {
  settings: {
    ...QuestionSettings
    followUp: QuestionSettings
  }
}

Är detta möjligt i TypeScript?

Svar #1

Du kan använda intersection-typer:

interface QuestionSettings {
   label: string;
   description: string;
   hidden: boolean;
}

interface Question {
  settings: QuestionSettings & {
     followUp: QuestionSettings;
  }
}