Es posible declarar un parámetro de tipo T
que este restringido por otro parámetro de tipo. Por ejemplo, en la siguiente función podemos restringir la gama de propiedades que se pueden obtener de un valor A restringiendo las posibles opciones a las propiedades que lo componen.
function obtenerPropiedad<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
const x = { a: 1, b: 2, c: 3, d: 4, e: 5 };
console.log(obtenerPropiedad(x, "b"));
console.log(obtenerPropiedad(x, "g")); // <- esta línea generaría un error