Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

344
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!