You could perhaps newtype using a class (so you can instanceof) or tag via { unit: 'seconds', value: 30 } but that feels awful and seems to be against the ecosystem established practices.
This is indeed one of my gripes with TS typing. I'm spoiled by other languages, but I understand the design choice.
It does learn, just not on your PC:
By default, Privacy Badger receives periodic learning updates from Badger Sett, our Badger training project. This “remote learning” automatically discovers trackers present on thousands of the most popular sites on the Web. Privacy Badger no longer learns from your browsing by default, as “local learning” may make you more identifiable to websites. You may want to opt back in to local learning if you regularly browse less popular websites. To do so, visit your Badger’s options page and mark the checkbox for learning to block new trackers from your browsing.
With local learning disabled, is there any need for using the Privacy Badger add-on specifically? Would it be possible to distribute the tracker lists which are generated by Badger Sett in a format compatible with uBlock Origin?
edit: Found that Badger Sett generates a json blob: https://github.com/EFForg/badger-sett/blob/master/results.js...
I am not that familiar with uBlock Origin's filtering syntax, but from a quick look, it seems like the json could be translated at least to the 'dynamic filtering' rules (accessible only when you enable "I am an advanced user"). Perhaps I'll open an issue.