3 ms·
I proposed a primitive for this in TypeScript a couple of years ago [1]. While I'm not entirely convinced myself whether it is worth the effort, it offers the
by nikeee 1y ago
I proposed a primitive for this in TypeScript a couple of years ago [1].
While I'm not entirely convinced myself whether it is worth the effort, it offers the ability to express "a number greater than 0". Using type narrowing and intersection types, open/closed intervals emerge naturally from that. Just check `if (a > 0 && a < 1)` and its type becomes `(>0)&(<1)`, so the interval (0, 1).
I also built a simple playground that has a PoC implementation: https://nikeee.github.io/typescript-intervals/ https://nikeee.github.io/typescript-intervals/
[1]: https://github.com/microsoft/TypeScript/issues/43505 https://github.com/microsoft/TypeScript/issues/43505
- mnahkies 1y agoRelated https://github.com/microsoft/TypeScript/issues/54925 https://github.com/microsoft/TypeScript/issues/54925 My specific use case is pattern matching http status codes to an expected response type, and today I'm able to work around it with this kind of construct https://github.com/mnahkies/openapi-code-generator/blob/main/packages%2Ftypescript-fetch-runtime%2Fsrc%2Ftypes.ts#L1-L26 https://github.com/mnahkies/openapi-code-generator/blob/main... - but it's esoteric, and feels likely to be less efficient to check than what you propose / a range type. There's runtime checking as well in my implementation, but it's a priority for me to provide good errors at build time