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

3.6K
Vistas
Obtenga claves de una interfaz Typescript como matriz de cadenas

Tengo muchas tablas en Lovefield y sus respectivas interfaces para las columnas que tienen.

Ejemplo:

 export interface IMyTable { id: number; title: string; createdAt: Date; isDeleted: boolean; }

Me gustaría tener los nombres de propiedad de esta interfaz en una matriz como esta:

 const IMyTable = ["id", "title", "createdAt", "isDeleted"];

No puedo hacer un objeto/matriz basado en la interfaz IMyTable directamente, lo que debería funcionar porque obtendría los nombres de interfaz de las tablas de forma dinámica. Por lo tanto, necesito iterar sobre estas propiedades en la interfaz y obtener una matriz.

¿Cómo logro este resultado?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

A partir de TypeScript 2.3 (o debería decir 2.4 , ya que en 2.3 esta función contiene un error que se solucionó en typescript@2.4-dev ), puede crear un transformador personalizado para lograr lo que desea hacer.

En realidad, ya he creado un transformador personalizado de este tipo, que permite lo siguiente.

https://github.com/kimamula/ts-transformer-keys

 import { keys } from 'ts-transformer-keys'; interface Props { id: string; name: string; age: number; } const keysOfProps = keys<Props>(); console.log(keysOfProps); // ['id', 'name', 'age']

Desafortunadamente, los transformadores personalizados actualmente no son tan fáciles de usar. Debe usarlos con la API de transformación de TypeScript en lugar de ejecutar el comando tsc. Hay un problema al solicitar un soporte de complemento para transformadores personalizados.

over 4 years ago · Santiago Trujillo Denunciar

0

Tal vez sea demasiado tarde, pero en la versión 2.1 de TypeScript puede usar keyof para obtener el tipo como este:

 interface Person { name: string; age: number; location: string; } type K1 = keyof Person; // "name" | "age" | "location" type K2 = keyof Person[]; // "length" | "push" | "pop" | "concat" | ... type K3 = keyof { [x: string]: Person }; // string

Fuente: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#keyof-and-lookup-types

over 4 years ago · Santiago Trujillo Denunciar

0

Lo siguiente requiere que enumere las claves por su cuenta, pero al menos TypeScript exigirá que IUserProfile y IUserProfileKeys tengan exactamente las mismas claves ( Required<T> se agregó en TypeScript 2.8 ):

 export interface IUserProfile { id: string; name: string; }; type KeysEnum<T> = { [P in keyof Required<T>]: true }; const IUserProfileKeys: KeysEnum<IUserProfile> = { id: true, name: true, };
over 4 years ago · Santiago Trujillo 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