Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

343
Vistas
¿Cómo obtener el nombre de la clave de tipo de la clave del objeto en mecanografiado?
type transaction = { uid: string, paymentMode : string, }

Quiero obtener el nombre clave del tipo para, por ejemplo

 function getFieldName(input) { returns a string with key name } const tran : transaction = {} getKeyName(tran.paymentMode) returns 'paymentMode'

Leí muchos artículos y probé algunas soluciones, así que entiendo que al menos necesitaremos crear un objeto para ese tipo, lo cual está bien.

Quiero hacer esto porque se requiere el nombre clave de un tipo y también quiero mantener el autocompletado para el nombre clave cuando escribimos algo como obj.key para evitar errores.

Lo sé, puedo crear un objeto separado del tipo con clave constante, par de valores. Quiero evitar esto, porque luego necesitaremos cambiar lo mismo en 2 lugares cada vez que haya un cambio en el tipo, que se puede perder.

Editar:

Estaba buscando exactamente esto: nameof en C# . @Aleksey L. dijo esto en los comentarios.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Este parece ser el tipo de firma de función que desea:

Tenga en cuenta que cumple con sus criterios de compatibilidad con IntelliSense autocompletar/sugerir:

ingrese la descripción de la imagen aquí

Parque infantil TS

 type Transaction = { uid: string; paymentMode: string; }; function getFieldName <T extends object, K extends keyof T>(o: T, key: K): K { return key; } const transaction: Transaction = { uid: window.crypto.randomUUID(), paymentMode: 'unknown', }; getFieldName(transaction, 'uid'); // "uid" getFieldName(transaction, 'paymentMode'); // "paymentMode" getFieldName(transaction, 'asdf'); /* ~~~~~~ Argument of type '"asdf"' is not assignable to parameter of type 'keyof Transaction'.(2345) */

No es posible derivar un nombre de propiedad de cadena en JavaScript (o TypeScript) pasando una referencia al valor de la propiedad. JavaScript simplemente no tiene este tipo de capacidad de meta-introspección en la actualidad.

Parece que su pregunta no se trata solo de seguridad de tipo, sino de DX/ergonomía. La solución anterior requiere proporcionar el nombre de la propiedad, pero la cantidad de caracteres adicionales para escribir antes de obtener el mensaje de IntelliSense es solo 1 (2 si considera los espacios en blanco):

 // For: obj.prop: // desired: fn(obj.p_) // 012^ // proposed: fn(obj, 'p_') // 01234^ // The closing quote is auto-inserted by IntelliSense, just like the closing parenthesis.
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda