Ну смотри, когда ты делаешь так:
@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
|