Dear all,
As we all know, TypeScript would bring a lot of convivence to front-end development by
providing a static type system. Unfortunately, most of Wikimedia's front-end codebases
do not ship with TypeScript definitions.
To address this problem, recently, I have been working on writing the TypeScript
definitions of OOjs and OOUI. Definitions of the former have been published to
DefinitelyTyped, which is an official store for TypeScript definitions, and npm
(
https://www.npmjs.com/package/@types/oojs) while those for the latter are still work in
progress.
During the development, some challenges arose:
1. Currently I am the only owner of @types/oojs npm package. This means that any
contributions to that package are required to be approved by me, and for contributions
from myself they are required to be approved by a DefinitelyTyped maintainer, which could
be a slow procedure. I believe it would help a lot if maintainers of OOjs/OOUI or other
Wikimedians would like to be another owner, which also reduces the bus factor.
2. The TypeScript compiler cannot recognize OO.inheritClass() calls and extend the class
in the type system correctly, thus you need to use type assertions to set up the type
correctly. This would bring inconvenience for classes like OO.ui.Dialog which heavily use
inheritance.
I am writing to seek solutions to these problems.
Best regards,
diskdance