Definiera en tom objekttyp i TypeScript
Jag letar efter sätt att definiera en tom objekttyp som inte kan innehålla några värden.
type EmptyObject = {}
const MyObject: EmptyObject = {
thisShouldNotWork: {},
};
Objekt med typen kan fritt lägga till egenskaper. Hur kan jag tvinga MyObject att alltid vara ett tomt objekt istället?
Mitt faktiska användningsfall är att använda typen EmptyObject inuti ett gränssnitt.
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 säger här är att alla eventuella egenskaper hos vårt EmptyObject endast kan vara never, och eftersom never inte har något representerande värde, är det inte möjligt att skapa en sådan egenskap, därför kommer objektet att förbli tomt, eftersom detta är det enda sätt vi kan skapa det på utan kompilationsfel.
Svar #2
type EmptyObject = Record<any, never>
Detta motsvarar Maciej Sikoras svar men använder Record-nyttotypen.
