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
Cómo establecer el tipo condicional para un parámetro con el tipo literal de otro parámetro de la función

Hay una función simple que selecciona algo por nombre o índice

 async function(value:number|string, by: 'index'|'name' = 'index'){ switch(by){ case 'index':{ selectby(value) }; case 'name':{ selectby(value) } } }

¿Hay alguna manera de saber el número de tipo de valor si es 'índice' o no se pasa, de lo contrario cadena

He intentado con la función de sobrecarga:

 async function(value:number, by?: 'index' = 'index') async function(value:string, by: 'name' = 'index') async function(value:number|string, by: 'index'|'name' = 'index')

el problema es que, la implementación donde la función asíncrona (valor: número | cadena, por: 'índice' | 'nombre' = 'índice') no aparece al pasar el mouse sobre la función. Muestra la primera anulación como la función predeterminada

¿Cómo puedo dar una documentación mecanografiada que si 'si el índice entonces el número' otra cadena

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Su ejemplo asíncrono funciona bien:

 async function test(value:number, by: 'index'): Promise<void>; async function test(value:string, by: 'name'): Promise<void>; async function test(value:number|string, by: 'index'|'name' = 'index'): Promise<void> { } test('test', 'name') // works test(1, 'name') // does not work test(1, 'index') // works test('aa', 'name') // does not work

Su IDE sugerirá el primer tipo de sobrecarga de función de forma predeterminada, pero tan pronto como agregue una cadena como primer parámetro, debería sugerir al usuario que agregue el name como segundo parámetro. ingrese la descripción de la imagen aquí

Puedes encontrar el ejemplo del parque infantil en el siguiente enlace .

about 4 years ago · Juan Pablo Isaza Report

0

¿Qué pasa con el uso de typeof ? Entonces no necesita el parámetro by en absoluto:

 switch(typeof value) { case "number": { selectBy(value) } case "string": { selectBy(value) } }

Alternativamente, puede componer sus parámetros como un tipo de objeto personalizado, incorporando sus restricciones establecidas. De esta manera, se verá obligado a pasar el derecho by el tipo de value . Sin embargo, esto conducirá a que solo se pase un parámetro a su función:

 type Value1 = { value: number, by: 'index' } | { value: string, by: 'name' } const getValue1 = async function ({ value, by }: Value1) { switch (by) { case 'index': { selectby(value) }; case 'name': { selectby(value) } } } getValue1({ value: 1, by: 'index' })

Lo mismo es posible para un tipo de matriz:

 type Value2 = [number, 'index'] | [string, 'name'] const getValue2 = async function ([value, by]: Value2) { switch (by) { case 'index': { selectby(value) }; case 'name': { selectby(value) } } } getValue2([ 1, 'index' ])

Patio de juegos mecanografiado


editar: las sugerencias de desplazamiento y escritura dependen de su IDE utilizado. Normalmente, puede cambiar la firma mostrada usando algunos botones de flecha a los lados:

hay flechas a la izquierda para mostrar otras sobrecargas

No conozco ningún mecanismo para decirle al IDE en qué orden mostrar las sobrecargas.

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!