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

158
Views
Polimorfismo mecanografiado con clase

Intento crear una función para crear una pieza de ajedrez casi como document.createElement:

 class pawn extends piece { } class bishop extends piece { } class rook extends piece { } class king extends piece { } class queen extends piece { } class knigth extends piece { } export interface pieces { "pawn": pawn "bishop": bishop "rook": rook "king": king "queen": queen "knigth": knigth } export function createPiece<K extends keyof pieces>(pieceName: K, options?: pieceInit): pieces[K]{ /// ??? }

Pero no sé qué necesito devolver en mi función createPiece... lo intento

 export function createPiece<K extends keyof pieces>(pieceName: K, options?: pieceInit): pieces[K]{ return pieces[pieceName] }

Pero recibí el siguiente error: 'piezas' solo se refiere a un tipo, pero se usa como un valor aquí

Mi meta es :

 const piece1:pawn = createPiece("pawn"); const piece2:queen = createPiece("queen"); . . .
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Definiste las pieces como una interface . Solo puede acceder a la información sobre las interfaces durante el tiempo de compilación y no durante el tiempo de ejecución. Es por eso que la línea return pieces[pieceName] no se compila.

En su lugar, debe definir las pieces como un objeto.

 export const pieces = { "pawn": pawn, "bishop": bishop, "rook": rook, "king": king, "queen": queen, "knigth": knigth }

Podemos usar este objeto para buscar las claves durante el tiempo de ejecución y también podemos extraer la información de tipo de pieces para usar durante el tiempo de compilación.

 export function createPiece< K extends keyof typeof pieces >(pieceName: K): typeof pieces[K] { return pieces[pieceName] }

Entonces, en lugar de usar pieces directamente en el tipo genérico, puede usar typeof pieces para obtener el tipo del objeto de pieces .

Patio de juegos

about 4 years ago · Juan Pablo Isaza Report

0

Puede hacerlo si define la interfaz como una const. Completamente escrito se vería así:

 type PiecesKey = keyof Pieces; type Piece<T extends PiecesKey> = Pieces[T]; type Pieces = { pawn: pawn; bishop: bishop; rook: rook; king: king; queen: queen; knigth: knigth; }; const pieces = { pawn: pawn, bishop: bishop, rook: rook, king: king, queen: queen, knigth: knigth, }; type pieceInit = {}; export function createPiece<K extends PiecesKey>( pieceName: K, options?: pieceInit, ): Piece<K> { return new pieces[pieceName](); }
about 4 years ago · Juan Pablo Isaza Report

0

EN su función, está devolviendo piezas de return pieces piezas es un tipo. No puede usar un tipo como usaría un valor. ¿Qué estás tratando de hacer más específicamente? te voy a dar una mano :)

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!