Например, чтоб он проверял есть ли глобальный модуль, и если есть, скачивал его в папку проекта...
shuffle<T>(list: _.Collection<T>): T[]
означает, что функция принимает на вход коллекцию элементов, каждый из которых имеет один и тот же тип T, и возвращает массив элементов этого типа. Тип элемента как бы обернут коллекцией и компилятор не знает его и не может вывести, что на выходе будет массив Syllable, а не any. Чтобы ему это подсказать, функция пишется как обобщенная, и при её вызове надо явно указать этот тип.