Moje przypuszczenie byłoby, że to ze względu na spójność i bliskości JavaScript.
Podobnie jak to jest powszechne, aby wymienić swoje argumenty metody (nawet w interfejsy), wszystkie argumenty do metod, konstruktorów, funkcji i indeksujących w TS musi być formatu name: type
lub name
(czyli name: any
). (uproszczona wersja tej historii, ale jestem pewien, że mnie dostać)
Od nazwy i typy żyją w różnych nazw w maszynopisie, argument postaci string
byłaby niejednoznaczna. Pamiętaj, że misją TypeScript jest trzymanie się blisko JavaScript, więc interpretacja powyższego jako argumentu typu string
byłaby nie do przyjęcia i okazuje się, że jest to odpowiednik string: any
.
Ponadto podczas indeksujący może być wyjątkiem, ponieważ mogą być tylko rodzajów string
lub number
to nie zawsze miało (TS 0,8 pozostawiono any
), dzięki innym powodem może być umożliwienie migracji do 0,9.
Przypuszczam, że "coś" dokumentuje rzeczywisty klucz do wyszukiwania w słowniku, a nie tylko jego typ. Jednak domyślna nazwa "klucza" prawdopodobnie powinna działać w 99% sytuacji ... Istnieje kilka przypadków (np. '' [Nazwa-stylu: ciąg]: ciąg''), gdzie niestandardowa nazwa może dostarczyć więcej dokumentacji. –