The easiest way to find type triangles of the type being described is to identify which types have those resist/strong relationships, so for instance, Grass beats and resists Water.
Here's a list of them (First in pair is the strong one, so "Gra/Wat" would mean Grass beats and resists water):
Fir/Gra
Fir/Ice
Fir/Bug
Fir/Ste
Wat/Fir
Ele/Fly
Gra/Wat
Gra/Gro
Fig/Roc
Fig/Dar
Poi/Gra
Gro/Poi
Gro/Roc
Fly/Gra
Fly/Fig
Fly/Bug
Psy/Fig
Bug/Gra
Roc/Fir
Roc/Fly
Dar/Gho
Ste/Ice
Ste/Roc
From these 23 pairs, a "type triangle" comes whenever a chain of three forms a circle. So, we can have the following:
Fir/Gra/Wat
Fir/Ste/Roc
Gra/Gro/Poi
Fig/Roc/Fly
And that's it. If you expand to allow immunity to replace resistance, you can then add Ele/Gro and Dar/Psy, which then allows you to form Fig/Dar/Psy. Meanwhile, if you only require that A beats B, which beats C, which beats A, then the list gets significantly longer, and I'm not going to bother listing them.
Another interesting thing to observe is that, unlike Fir/Wat/Gra, the other sets don't have inherent resistance to their own types for all in the triple - Roc doesn't resist itself, nor does Gro, Fig or Fly. So Fir/Wat/Gra is actually unique in that way.