Вам просто нужно добавить Typeable
класс типов в качестве границы контекста вашего типа T
:
def sayMyName[T: Typeable](t: T): String = Typeable[T].describe
sayMyName("") //String
Вы также можете явно объявить неявный параметр:
def sayMyName[T](t: T)(implicit typeable: Typeable[T]): String = Typeable[T].describe
Добавивпривязанный к контексту, вы просите компилятор подождать с разрешением Typeable
класса типов, пока не будет вызван sayMyName
с конкретным типом, а не разрешить его сразу (что невозможно, поскольку реальный тип T еще не известенна данный момент).