Latent growth model - Is it possible to fit this model on latent variables? Would it be possible to fit latent growth curve model on latent variables instead of directly on the observed measures? Each latent variable would represent a latent construct (e.g., intelligence) at each time point (T1-T3) based on questionnaire items (some categorical, some ordinal, some numerical variables), and then we would fit the latent growth model on these latent constructs. If this is possible, is there any book/article you could recommend?



Would it be possible to fit latent growth curve model on latent variables instead of directly on the observed measures?

Yes, that is sometimes called a "curve-of-factors" model.  It requires establishing scalar measurement invariance, so that the differences in the factor mean over time are not determined by arbitrary identification constraints (although the units themselves are still arbitrary).  This article does a good job talking about the additional identification constraints necessary (e.g., the mean of the latent intercept should be fixed to 0, if that corresponds to the first factor's mean being 0 to identify the longitudinal CFA model with scalar-invariance constraints).
https://psycnet.apa.org/doi/10.1027/1614-2241.4.1.22
That paper shows the testing of invariance in the growth model itself, which I think is strange.  Better to test invariance using unrestricted CFA models, then after (at least partial) scalar invariance is established, then add second-order growth factors to your model.

Each latent variable would represent a latent construct (e.g., intelligence) at each time point (T1-T3) based on questionnaire items (some categorical, some ordinal, some numerical variables)

Ordinal is categorical; by "categorical" do you mean binary?  Both involve additional measurement parameters (thresholds) that must be invariant across occasions to link the latent-response scales.
https://psycnet.apa.org/doi/10.1037/1082-989X.9.3.301
https://doi.org/10.1007/s11336-016-9506-0
Threshold invariance can only be tested with > 2 thresholds (4 or more response categories).  With only 3 ordinal categories, you can still link latent-response scales, but you can only assume (not test) threshold invariance before proceeding to test metric and scalar invariance.  With only 2 categories (1 threshold), you cannot even distinguish between differences in intercepts and differences in (residual/marginal) variance, so the only available valid test would be to compare your configural model to scalar invariance (i.e., equal threshold, loadings, and intercepts, but allow residual/marginal variances to differ by only fixing them at Time 1).
The semTools::measEq.syntax() function is designed to facilitate correctly specifying such models.  It can output lavaan or Mplus syntax using the as.character() method, but it is most optimized for working with lavaan.
