openlang

Как разрешить TypeScript принимать объект без свойств?

Вот этот код.

function inspect(item: { label: string } | {}) {
    if (item.label) { //error
        console.log("inspect jingo");
    }
}

Получаю такую ошибку: The property "label" does not exist in the type "{} | {label: string;}".The property "label" does not exist in the type "{}".

Я новичок в typescript. Как объявить, что item принимает пустой объект либо {label: string}.

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Не уверен, считается ли это хорошим подходом в TypeScript, но внутри условия if можно явно утверждать, что item имеет тип { label: string }:

    function inspect(item: { label: string } | {}) {
        if ((item as {label: string}).label) {
            console.log("inspect jingo");
        }
    }
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Инициализация TypeScript Map со значениями в виде массивов строк

    Создаю Map, в котором каждая запись содержит массив строк. Как одновременно задать его тип и инициализировать одним выражение…

    Ответы 2Последняя активность typescript
  2. Контракт вызываемой функции в Typescript

    Почему Typescript принимает определение моей функции, хотя оно отличается от сигнатуры интерфейса, но сообщает о проблеме, ко…

    Ответы 2Последняя активность typescript
  3. Ошибка преобразования типа address в uint256 в Solidity

    Я создал массив структур и попытался получить из него значения каждого аккаунта. Но передача переменной address, содержащей m…

    Ответы 3Последняя активность solidity