• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

329
Views
Declaraciones de tipos duplicados mecanografiados

Tengo problemas con las declaraciones de tipos de mecanografiados duplicados en el siguiente caso:

Tengo el siguiente árbol de dependencias para mi aplicación A:

 A->@angular/http:2.3.1 A->B->@angular/http:2.3.1

Tanto A como B son administrados por npm. despues de correr

 npm install

el sistema de archivos se ve así:

 A/node_modules/ @angular/http ... B/node_modules @angular/http

El problema parece ser que ahora hay dos tipos de declaraciones de tipos @angular/http como Response o Headers . Y de alguna manera, el transpilador de TypeScript parece incapaz de manejar eso, lo que da como resultado el siguiente mensaje de error:

TS2453:El argumento de tipo para el parámetro de tipo 'T' no se puede deducir del uso. Considere especificar los argumentos de tipo explícitamente. El argumento de tipo candidato 'Respuesta' no es un argumento de tipo válido porque no es un supertipo del candidato 'Respuesta'. Los tipos de 'encabezados' de propiedad son incompatibles. El tipo 'Encabezados' no se puede asignar al tipo 'Encabezados'. Los tipos tienen declaraciones separadas de una propiedad privada 'mayBeSetNormalizedName'.

Al leer el mensaje, supongo que esto es un problema de Typescript que no puede hacer coincidir las declaraciones de tipo duplicadas.

¿Alguien experimentó el mismo problema? ¿Cómo manejar ese problema? ¿Cómo manejar tales colisiones de nombres?

about 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Mientras tanto, descubrí que puede corregir este error importando explícitamente los tipos correspondientes dentro de la clase de uso de A. En mi caso (consulte el mensaje de error anterior), necesitaba:

 import {Response, Headers} from '@angular/http';
about 3 years ago · Santiago Trujillo Report

0

Yo tuve el mismo problema. Básicamente hay dos formas de resolver esto.

  1. Cree un módulo UMD del proyecto B. Esto puede llevar mucho tiempo
  2. usar as any as TheRequiredObject ver más abajo.

Supongamos que tienes esta clase en el proyecto b:

 export class B{ getSome(): Observable { return this.http.get('some_url'); } }

y esto es lo que quieres en el proyecto a:

 export class A{ getSomeFromB: Observable{ return B.getSome() as any as Observable; } }
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error