Когда вы вводите строку, TS распознает ее как простой string
, а не как литерал 'required'
. Вы можете:
- Использовать литерал объекта непосредственно в вызове функции:
const baz = bar({ apple: [ { constraint: 'required' } ] })
Этот способ вывода сохраняется
Объявите строку
as const
, то есть:
const foo = { apple: [ { constraint: 'required' as const } ] }
Это дает понять, что вы не имеете в виду обобщенную c строку, а именно тот литерал, который вы ввели. В более старой версии TS as const
нет, но вы все еще можете использовать 'required' as 'required'