Defina um tipo de objeto vazio em TypeScript
Estou procurando maneiras de definir um tipo de objeto vazio que não possa conter nenhum valor.
type EmptyObject = {}
const MyObject: EmptyObject = {
thisShouldNotWork: {},
};
Objetos com esse tipo podem adicionar quaisquer propriedades. Como posso forçar MyObject a ser sempre um objeto vazio, em vez disso?
Meu caso de uso atual é usar o tipo EmptyObject dentro de uma interface.
interface SchemaWithEmptyObject {
emptyObj: EmptyObject;
}
Resposta #1
type EmptyObject = {
[K in any] : never
}
const one: EmptyObject = {}; // yes ok
const two: EmptyObject = {a: 1}; // error
O que estamos dizendo aqui é que todas as propriedades eventuais do nosso EmptyObject só podem ser never, e como never não tem valor representável, criar tal propriedade não é possível, portanto o objeto permanecerá vazio, pois esta é a única maneira de criá-lo sem erro de compilação.
Resposta #2
type EmptyObject = Record<any, never>
Isto é equivalente à resposta de Maciej Sikora, mas faz uso do tipo utilitário Record.
