Using the Index Type Query
A palavra reservada keyof conhecida como operador index type query retorna uma union de nomes de propriedades de um tipo, usando tipos de valores literais, abaixo mostra como podemos aplicar o keyof para a classe Product:
A notação de tipo para a myVar é keyof Product, que vai ser a união das propriedades definidas pela classe Product no dataTypes, assim o que teremos criado será isso:
Atribuir qualquer outro valor para myVar, que o final statement atribuido para produzir um erro de compilação:
A palavra-chave keyof pode ser usada para restringir parametros de tipo generico de modo que eles só possam ser tipados para corresponder às propriedades de outro tipo
O exemplo define uma função nomeada getValue, que tipo parametro K é restringido usando typeof T que significa que K pode ser o nome de somente uma das proprieades definidas por T, lembrnaod do tipo usado para T quando a função é invocada. Quando a função getValue é usada com um objeto Product, o keyname parameter pode ser somente nameou price
E quando a função getValue é usada com o objeto Product, os nomes dos parametros podem ser somente namee role. Em ambos os casos, o nome chave do parametro pode ser usado para obtenção segura ou definir o valor de uma propriedade de objetos Product ou Employee