Jak docilit neomezeneho poctu argumentu do metody TypeScriptu

TypeScript nepodporuje klicove slovo/objekt/pole arguments v metode. Misto toho ale zavadi specialni definici v hlavicce metody a ta vypada napriklad takto: …args:string[]. Tri tecky definuji, ze od tohoto parametru jich muzete do metody vlozit kolik jen bude libo.

string je typ, ktery musi mit vsechny objekty predane do teto “hromadne” promenne. Pokud chcete hazet ruzne typy, zvolte typ any ale pak zapomente na jakoukoliv Intellisense, pokud z nej neudelate zase jiny typ. Za datovym typem(zde string) uz jen napisete [] jako deklaraci pole.

Je logicke, ze args(nebo podle vaseho pojmenovani) argument muze byt v kazde metode pouze jeden. To je logicke a mimochodem stejne jako u deklarace v hlavicce metody C# params string[] args. Pokud to neudelate, soubor se nezkompiluje do JS. Kdyz jsme zase u nazvu parametru, nemuze to byt arguments, ktere je “klicove pole” v kazde metode JS.

Pokud byste prece nechali arguments, kompilator by vam to dal nalezite najevo: “Duplicate identifier ‘arguments’. Compiler uses ‘arguments’ to initialize rest parameters.” Do … argumentu se nepocitaji predchozi parametry metody. A ted prakticke ukazky kodu, kdyz v TypeScriptu napisete…:


…vznikne po kompilaci toto:


Jak tedy sami vidite, typescript si sam vytvori pole podle nazvu vaseho “args” parametru a zkopiruje do nej vsechny hodnoty z pole arguments, ktere si JS vytvari sam v kazde metode. A jeste jak toto zobrazi prohlizec:

Leave a Reply

Your email address will not be published. Required fields are marked *