Como posso sugerir ao compilador Typescript para inferir tipos literais de string para propriedades?

O compilador Typescript inferirá um tipo literal de string para consts:

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

No entanto, para propriedades, o tipo é inferido comostring.

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

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

Neste exemplo, como posso obter o compilador para inferir quex é do tipo{ y: 'def' } sem escrever uma anotação de tipo parax?

Editar: Há um abertoquestão solicitando suporte para esse recurso. Uma solução alternativa sugerida é usar sintaxe como esta:

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

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

Experimente no Playgroundaqui.

Edição 2: Existe até um abertoPR isso resolveria esse problema. Desativar o alargamento de tipo parece ser uma solicitação popular.

questionAnswers(2)

yourAnswerToTheQuestion