Типизировать ключи особого смысла нет, а для значений/структуры массива нативного решения нет, надо делать руками.
Если под "типизацией ключей" имеется строго определенный набор ключей, то это называется DTO/ValueObject. То есть тупо вместо массива используется объект, в котором структура его свойств может быть четко определена.
Для типизации же значений служат
коллекции Вот, например,
недавний пост, но вообще их тыщи.