это конструктор для буквально типизированных объектов. Во время выполнения это просто добавление свойств к объекту, но определение позволяет TypeScript отслеживать буквальный ключ и типы значений. Во всяком случае, надеюсь, что это полезно. Удачи!

лятор Typescript выведет строковый литерал для констант:

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

Тем не менее, для свойств, тип выводится какstring.

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

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

В этом примере, как я могу заставить компилятор сделать вывод, чтоx имеет тип{ y: 'def' } без написания аннотации типа дляx?

Редактировать: Там открытвопрос Запрос поддержки для этой функции. Один из предложенных способов - использовать такой синтаксис:

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

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

Попробуйте это на детской площадкеВот.

Изменить 2: Там даже открытPR это решило бы эту проблему. Отключение расширения типов - популярный запрос.

Ответы на вопрос(2)

Ваш ответ на вопрос