для документирования типов практичнее т.к. и камменты не писать и точнее всё описывается. С TS переписал часть работающего кода, должно работать надёжнее. Но при этом потратил кучку времени на то, чтобы проставить все типы (при документировании через JSDoc было бы так же). И вот уже почти достиг нужного мне результата, правда в ущерб гибкости пополнения библиотеки.
Сейчас большая загвоздка и непонимание у меня в том, что если импортирую namespace как
import * as Components from './components'
а после определяю тип
typeof Components
, на выходе получаю не
Component1|Component2|...
а
typeof Component1|typeof Component2| ...
а иначе неймспейс не заюзать как тип. Такая же ситуация если делать ака Partial<T>:
type MyMap = {[key in Extract<keyof Components,string>]?: Components[key]}
В общем, забил. Сделал _components: { [name: string]: any } = {}. А уже при использовании, укажу нужные типы.
Обсуждают сегодня