Показать сообщение отдельно
  #3 (permalink)  
Старый 19.10.2021, 13:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

Ну смотри, когда ты делаешь так:
@Input() post: Post
ты говоришь - вот свойство post, в нём лежит объект типа Post. Но сам объект ты туда явным образом не кладёщь. TS говорит тебе: "эээ нет, раз ты заявляешь что тут Post - будь добр положи".

Когда ты делаешь так:
@Input() post: Post | undefined
Ты говоришь что тут будет Post или ничего. Соответственно когда потом ты используешь post без проверки что он точно есть, TS тебе говорит "possibly undefined" - "возможно, что там нифига нет", т.е. если там ничего нет, а ты пытаешься получить свойства объекта post - это явная ошибка.

Когда ты делаешь так:
@Input() post: any
Ты говоришь: "тут лежит ВСЁ что угодно, при том одновременно, иди ты нафиг TS". Так, конечно, работает - внешне, но это убивает весь смысл TS т.к. никак не защищает от настоящих ошибок.

Теперь к решению: ты можешь написать так:
@Input() post!: Post
Чем ты скажешь TS'у: "тут лежит Post и он там точно есть, мамой клянусь!". Если вдруг его там не окажется - это уже будет забота не TS'а.

Правильным же решением будет просто проверять наличие post перед применением, но как оно там в ангулярах я хз.)
__________________
29375, 35
Ответить с цитированием