Typescript - keyof sin una función
Estoy enfrentando el siguiente problema y no estoy seguro de cómo abordarlo. Quiero asignar el nombre de una propiedad a una propiedad de tipo cadena de otro objeto. Sin embargo, no estoy seguro de cómo usar 'key of' en este caso.
Logré hacerlo usando la función "validation", solo para tener errores de compilación, pero me gustaría evitar declarar una función que no hace nada. ¿Alguna idea?
Respuesta #1
Las aserciones de tipo existen para permitirte hacer cosas que el compilador considera inválidas. Solo declara el tipo de const explícitamente, :
interface IGame { id: number}
const incalidColumn: keyof IGame = 'invalild' // error
const validColumn: keyof IGame = 'id'
Respuesta #2
Es posible usar el mismo enfoque que en esta respuesta para segregar la verificación de tipos de la salida de JS:
type CheckGameProp<T extends keyof IGame> = T;
const invalidColumn = "invalidColumn";
{ type _checkGameProp = CheckGameProp<typeof invalidColumn>; }
const validColumn = "id";
{ type _checkGameIdProp = CheckGameProp<typeof validColumn>; }
El tipo de marcador de posición _checkGameIdProp se puede delimitar para evitar problemas con la elección del nombre del tipo.
Dependiendo de cómo se usen invalidColumn y validColumn, puede ser mejor verificarlos en el lugar donde se usan.
