The easiest way is probably to use TermsFacetFor(..) like you've already suggested. You could also use PageTypeName instead of PageTypeId.
If you want more controll of and maybe want to group some pagetypes and call them somthing else you can do something like this aswell:
query
.FilterFacet(SearchFacets.All, content => content.SearchTitle.Exists())
.FilterFacet(SearchFacets.ArticlesAndNews, content => content.SearchTitle.Exists()
& content.MatchTypeHierarchy(typeof(ArticlePage)) | content.MatchTypeHierarchy(typeof(NewsPage)))
.FilterFacet(SearchFacets.Documents, content => content.SearchTitle.Exists() & content.MatchTypeHierarchy(typeof(UnifiedFile)))
.FilterFacet(SearchFacets.Contacts, content => content.SearchTitle.Exists() & content.MatchTypeHierarchy(typeof(IUser)));
SearchFacets is just a static class with facet names.
Is there a easy way to make facets / filters for the type of page that is returned?
Vi search for pages that are different types and want to display the different versions in a list.
Example. TermsFacetFor(x => x.PageTypeId)
/Henrik