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.
