¿Cómo puedo insinuar al compilador de mecanografiado para inferir tipos literales de cadena para propiedades?

El compilador de Typecript inferirá un tipo literal de cadena para consts:

const a = 'abc';
const b: 'abc' = a; // okay, a is of type 'abc' rather than string

Sin embargo, para las propiedades, se infiere que el tipo esstring.

const x = {
    y: 'def',
};

const z: { y: 'def' } = x; // error because x.y is of type string

En este ejemplo, ¿cómo puedo hacer que el compilador deduzca quex es de tipo{ y: 'def' } sin escribir una anotación de tipo parax?

Editar: Hay un abiertoproblema solicitando soporte para esta característica. Una solución alternativa sugerida es usar una sintaxis como esta:

const x = new class {
    readonly y: 'def';
};

const z: { readonly y: 'def' } = x; // Works

Pruébalo en Playgroundaquí.

Edición 2: Incluso hay un abiertoPR eso resolvería este problema. Desactivar la ampliación de tipo parece ser una solicitud popular.

Respuestas a la pregunta(2)

Su respuesta a la pregunta