4 ms·
The ts-regexp package `infer`s out of template literal types to do its magic. That's possible from JSDoc too: https://www.typescriptlang.org/play/?filetype=js#c
by matt_kantor 10mo ago
The ts-regexp package `infer`s out of template literal types to do its magic. That's possible from JSDoc too: https://www.typescriptlang.org/play/?filetype=js#code/PQKhCgAIUgBAXApgWwA4BsCGTIG8DO8ATgJYB2A5gL6QAqUMCAnqogCaIBmetkiAHkjJt8kAAYASXOU6IikAHJ9BiYaLIBXZACM5NRBQr4xkAPyLIALkhlEANz2KtuogHlOAUUP4GwcOABjAHsyQkhtTHwAa0R4SABeSAByABYAJj5vJP9QRngWdi48BWc5dy8jAB581iDuCOjYgD4aCvwASTIAIUiYuJA-YGBIEdGx8YnJqfGAPVMgA https://www.typescriptlang.org/play/?filetype=js#code/PQKhCg...
The behavior of ts-regexp is not especially related to the `RegExpExecArray` type. That package uses unsafe assertions to implement its API.
The only thing that requires TypeScript syntax in the playground you linked is the non-null assertions. Here's that same code in JSDoc mode with the non-null assertions removed (`strictNullChecks` is disabled instead): https://www.typescriptlang.org/play/?filetype=js#code/JYWwDg9gTgLgBAbzjAnmApgEwEroOYCiAHmHAL5wBmUEIcA5DAM4C0U+6J9A3AFC8B6AXABCAQybAAxnACuTMXnS8pEAHZN4qDJgAiYmOgAKBw1DVwAvMjRZchEgAp6APUcB+ADwp0YqAD4AHUDMBAAWMgBKFg9PEHUYAAsgkIQAJiiYr0wxFBTQjMiAEnoAGgY8eki+VQ14TnQpXCYrGx19QxMYMzUAOgapZzSABlGWAEZhljSwqt68GlkwJj4hOHW4F3cVdU04djAAGzEpdGbW7SwO41N0c16D49OASTUh0anJ6dnyxxADKSJco+PzleJqJLlHIocoQSiUJjoGDlTRQYBqPDlBYQJZMSJWfxwAAGRQQ2NxvWhZF6pPJy164KS1Npi3pIKgZCJ1UEwg2fP5AsFQuFItFYvFoq2-DWAGEEpwYLIxIc4GIAO5+dBqdBMJg8ja4GBidEtVRQdhSeAQMAwYDqZXAVBwABGEiwcHUcCYqgwOzqcDpLWslxw+GIYGcbi8AEclRDHXlgpgANSxWRqR3+ADaYhYAC8ALrJyKRdwlSIMgGJV7vYZgIhzQN8QO9dOO1a8jZS4CUOCOFuxsTx1D4hC8PkttswbhwNbPXuD4coODAFp4YAANy15TEcgz8BA8ngzvQcDANA3wEw7okcDV6EOh16442az5UrI0s7AEFDkwIHe0AANYtGqjqJKqhw9AYdpqH6eyBmkFy2KGDgRq4sSGEQMDZrmhbFgAPrEi62qg+Spl4U64fmRYluWlYwICNb0CMdYNhWTa8Ihrb7vq-Ldr2-askwaS9Fh8CWJJe7XpQ6JYKOL7rNxU4znOvbomAsjwKuaiMKqyAKuUjpwIeez-IxEEkQmd6JNIEHolIhyyNeLS7lOz58m+77bJ++oAMpiJQ+BKlAmB6l5BDemIYDongcAAGRwDKiR+CcZgyscupwClaiYIcsW8CG9jhs4wSxGoYggFgKSRHM5lMW89CeBVVWYP4tUccJHYSj1vXeYVKHFU49CxLJUCaPkkTBERXiIrUbU5jRHUMQ1zhhARYiNl1fF9bte0ClKRVhsNWajcA404VNgQFrEc3qG1kQFnVVbMf4W04ss3X7d94pSjtRg0BgsDLpwq6GGopz6gAAswLCcBglpw+a0AAFwMPViS-ocrz0HAyYMI8JzoFjONwJg6h6aDeySBDp5qAB9CVFQxx4LwWZHWhzhgLc5jPRZJNqOUHMlfQ3PdHcukVoTpwCwWfDC8NYs9GUFR84CAt8NDsPw40MBIzQUBo-Q6KYNIOq4+TOq6fURBg16Dl0wzmC45QLMDToQ3oUrEtzAMzhzCbZsrO7djHV7PO6eU9DOxWfv0AHuVB5rXkAGIs3AG4OqbqBa6wOuI3cBtowcviGJgzOKCHqEi97vNR+ulTcmsMN5yQuv66jDCyLjQ7l-QG4uyzppDvTx6nqoIDOnJmBV57XMRyrjOyAP3L6t+mDZ7BypwPlZjb+ilDQOZsHwTblVHDc4vmMhHth84IAoF0yv11eVR8Jw5+HJfPS9P+shQKcL6kptgf3AF-J+Eteiu0UMHLyIopQRVtpoLUpwPS9mgXgPUoCL4QPuClJgrxTanGDtg8BEdf62ikEBFAQDeh0KAA https://www.typescriptlang.org/play/?filetype=js#code/JYWwDg...
---
> For my use-case, I just want to know that I can change either my code or regex and I'll be alerted before runtime or buildtime if I've forgotten to account for something.
If you can show a concrete example what you want using TypeScript syntax then I'm pretty sure I could port it to JSDoc syntax. (To be clear I'd personally much rather write the TypeScript syntax as I find JSDoc comments annoying & verbose, but they're plenty powerful, being nearly isomorphic to TypeScript annotations.)