Definer en tom objekttype i TypeScript


Jeg leter etter måter å definere en tom objekttype som ikke kan inneholde noen verdier.

type EmptyObject = {}

const MyObject: EmptyObject = {
  thisShouldNotWork: {},
};

Objekter med denne typen kan legge til hvilke som helst egenskaper. Hvordan kan jeg få MyObject til alltid å være et tomt objekt i stedet?

Mitt faktiske brukstilfelle er å bruke typen EmptyObject inne i et grensesnitt.

interface SchemaWithEmptyObject {
  emptyObj: EmptyObject; 
}

Svar #1

type EmptyObject = {
    [K in any] : never
}

const one: EmptyObject = {}; // yes ok
const two: EmptyObject = {a: 1}; // error

Det vi sier her er at alle mulige egenskaper til vår EmptyObject kan kun være never, og siden never ikke har noen representerende verdi, er det ikke mulig å opprette en slik egenskap, derfor vil objektet forbli tomt, da dette er den eneste måten vi kan opprette det på uten kompilasjonsfeil.

Svar #2

type EmptyObject = Record<any, never>

Dette tilsvarer Maciej Sikoras svar, men bruker Record-verktøytypen.

Relaterte artikler