In Angular 18.02^ you can use transform option for @Input():
class ParentComponent {
data: Dog | Cat;
}
** parent template **
<app-child-component [cat]="data" />
**
class ChildComponent {
@Input({ transform: (v: Dog | Cat) => v as Cat }) cat!: Cat;
}