This is only partially true as vlans, including tagged vlans, can be configured as software vlans as described here: https://docs.turris.cz/basics/luci/vlan/luci-vlan/
Just follow the guide mentioned above. You create an interface with a subnet configured and with its own bridge. For Port configuration you use DSA interfaces lanX.X, where lanX is used for untagged traffic and lanX.X is used for tagged traffic. To have 3 vlans with vid 1,2,3 in a trunc on lan port 1 you set up 3 interfaces (with 3 separate software bridges) and assign lan1.1 to bridge 1, lan1.2 to bridge 2 and lan1.3 to bridge 3. If you want vlan 1 to be reachable additionally untagged on lan port 2 you add interface lan2 to bridge 1.
DSA support isn‘t completed in OpenWRT, but above configuration works fine. Problem is that traffic has to pass CPU but as your TO is most likely configured as a router it mostly routes traffic (OSI Layer 3) which needs to pass CPU anyway. And even if you don‘t use your TO as a router you most likely won‘t notice any performance issues…
There is currently a bug in Switch config that interferes traffic coming from clients that roam through the network (e.g. roam from TOs own wifi to an AP connected to a LAN Port). One workaround is to use TOs WAN Port as trunc port and use one LAN Port as WAN Port (just switch assignment to interfaces in LuCI). E.g. use eth2.X for vlan setup described above.