Well, it seems that you have to either pass a second type parameter or pass no type parameters at all:
searchBar = viewChild<SearchBarComponent, ElementRef>('searchBar', { read: ElementRef });
Or
searchBar = viewChild('searchBar', { read: ElementRef });
This is TypeScript behavior. Since the read option relies on the second type, it either has to be specified or no types should be specified - at which TypeScript will infer the type from whatever you pass in.