Currently, if you edit {{my_list|one|two|three|four}} with VisualEditor in order to remove element “two”, it will generate the following code: {{my_list|1=one|3=three|4=four}}.
Another example is templates which look for last parameter: {{word_list|word1|word2|word3|lang code}}. There is no way to write in TemplateData that lang code may be the the 2nd, the 4th, or the 7th parameter (according to number of other parameters the user has given).
I think a good implementation could use paramOrder which would be mandatory when any parameter would be tagged as anonymous.
Related: T54582: TemplateData: Allow hinting to specify auto-numbered parameter names in some fashion
Example: {{word_list|word1|word2|word3|…|lang code}} would be represented like this:
<templatedata> { "description": "This template is a list of anonymous parameters. The last parameter is a language code", "params": { "1": { "anonymous": true, "label": "First list element", "required": true }, "2": { "anonymous": true, "label": "Second list element", "suggested": true } "3": { "anonymous": true, "label": "Third list element" }, "4": { "anonymous": true, "label": "Fourth list element" }, "lang": { "anonymous": true, "label": "Language code", "required": true }, }, "paramOrder": ["1", "2", "3", "4", "lang"] } </templatedata>