Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

3.6K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda