CursosEmpresasBlogLiveConfPrecios

Void y never

Clase 11 de 32 • Curso de TypeScript 3

Clase anteriorSiguiente clase

Contenido del curso

Introducción a TypeScript
  • 1
    El lenguaje de programación TypeScript

    El lenguaje de programación TypeScript

    08:43
  • 2
    Instalación de herramientas para TypeScript

    Instalación de herramientas para TypeScript

    05:47
  • 3

    Instalación de herramientas en Windows

    01:05
  • 4
    Navegación y refactorización

    Navegación y refactorización

    04:37
Entorno de Desarrollo
  • 5
    El compilador de TypeScript

    El compilador de TypeScript

    08:00
  • 6
    El archivo de configuración de TypeScript

    El archivo de configuración de TypeScript

    07:22
  • 7
    Mi primer proyecto TypeScript

    Mi primer proyecto TypeScript

    05:09
Tipos en TypeScript
  • 8
    Tipado en TypeScript

    Tipado en TypeScript

    01:37
  • 9
    Number, Boolean y String

    Number, Boolean y String

    14:09
  • 10
    Any

    Any

    08:28
  • 11
    Void y never

    Void y never

    15:58
  • 12
    null y undefined

    null y undefined

    11:03
  • 13
    Object

    Object

    07:44
  • 14
    Array

    Array

    09:44
  • 15
    Tupla

    Tupla

    11:25
  • 16
    Enum

    Enum

    10:59
  • 17
    Unión de Tipos, Alias y Tipos Literales

    Unión de Tipos, Alias y Tipos Literales

    11:58
  • 18
    Aserciones de tipo

    Aserciones de tipo

    11:26
  • 19
    Funciones en TypeScript

    Funciones en TypeScript

    14:19
  • 20
    Resumen

    Resumen

    06:54
Tipos Personalizados
  • 21
    Interfaces

    Interfaces

    10:18
  • 22
    Interfaces: propiedades opcionales

    Interfaces: propiedades opcionales

    10:57
  • 23
    Extensión de interfaces

    Extensión de interfaces

    10:54
  • 24
    Clases

    Clases

    14:02
  • 25
    Clases públicas y privadas

    Clases públicas y privadas

    15:10
  • 26
    Métodos Get y Set

    Métodos Get y Set

    08:46
  • 27
    Herencia de clases y propiedades estáticas

    Herencia de clases y propiedades estáticas

    17:41
  • 28
    Resumen

    Resumen

    13:24
Módulos
  • 29
    Principios de responsabilidad única

    Principios de responsabilidad única

    15:03
  • 30
    Resolviendo módulos

    Resolviendo módulos

    10:04
  • 31
    Webpack y agrupación de Módulos

    Webpack y agrupación de Módulos

    14:02
Cierre
  • 32
    Cierre

    Cierre

    00:57
    david bryan alcocer cañete

    david bryan alcocer cañete

    student•
    hace 6 años

    Tipo Void: Representa la ausencia de tipo. usado en funciones que no retornan nada. Tipo Never: Representa funciones que lanzan excepciones o nunca retornan un valor.

      Luis Abdel Rangel Castro

      Luis Abdel Rangel Castro

      student•
      hace 5 años

      un return; lo que hace es terminar la ejecución de la función si devolver algo.

      function showInfo(user: any): void { console.log('User Info',user.id); if (1 === 1) { return; } console.log('hello'); return; } showInfo({id:11});
      Darwin Rodríguez

      Darwin Rodríguez

      student•
      hace 5 años

      Si pero recuerda que también existen subtipos dentro de void (null y undefined)

    Nicolas Castañeda

    Nicolas Castañeda

    student•
    hace 5 años

    Tipo Void: Son funciones que no ++necesitan++ de un retorno, por lo que al asignar el tipo void se sobre entiende que estas funciones retornan un undefind o un valor no definido, mas si permiten el uso de este return con este valor, que en el futuro puede ser usado para la terminacion de una funcion de este tipo.

    Tipo Never: En este caso son funciones que ++nunca++ retornaran un valor, dentro de TS si intentas retornar un valor en una funcion Never te marcara error, normalmente usada para errores ya que son funciones que no retornan un valor sino que lanzan o arrojan un error o mensaje al ejecutarse, cabe destacar tambien que las variables declaradas como nulas no permiten que se les asigne ningun tipo de dato, caso contrario a los void que permite la asignacion del dato undefind

    Francisco Javier Antúnez Durán

    Francisco Javier Antúnez Durán

    student•
    hace 6 años

    Código de la clase:

    // type void for functions // Explicit type function showInfo(user: any): any { console.log(`User Info ${user.id} ${user.username} ${user.firstname}`); // return 'hola'; } showInfo({id: 1, username: 'Antúnez Durán', firstname: 'Francisco Javier'}); // Inferred type function showFormattedInfo(user: any) { console.log(`User Info, id: ${user.id} username: ${user.username} firstname: ${user.firstname}`); } showFormattedInfo({id: 1, username: 'Antúnez Durán', firstname: 'Francisco Javier'}); // Type void as variable data type let unusable: void; // unusable = null; --> colocar "strict": false en tsconfig.json para poder hacer uso unusable = undefined; // Type never function handleError(code: number, message: string): never { // Process your code // Generate a message throw new Error(`${message}. Code: ${code}`); } try { console.log('La funcion handleError no devuelve nada bajo esta linea'); handleError(404, 'Not found'); } catch (error) {} function sumNumbers(limit: number): never { let sum = 0; while (true) { sum++; } // return sum; } sumNumbers(10); // --> Llamada a un bucle infinito no acabaria nunca, typescript no compila, al verlo.
    Javi Felices

    Javi Felices

    student•
    hace 5 años

    El declarar una función como void o never, a efectos de resultado, produce el mismo. El tipo void lo tengo claro, en cambio a never no le veo a utilidad como tal.

      Jean Carlos Hernandez Carrasquel

      Jean Carlos Hernandez Carrasquel

      student•
      hace 5 años

      El detalle está en que las funciones tipo void realizan algo y terminan su flujo (sentencias, instrucciones...), por defecto al no retorna nada (ningún dato) devuelven undefined (pero terminan y devuelven algo). En cambio las tipo never son las que nunca retornar, se podría ver como que no terminan sus instrucciones, por ello los ejemplos son lanzando una excepción (que por definición interrumpe la ejecución normal del código) y generando un bucle infinito. Esa es la gran diferencia entre void y never, la primera termina su código pero no retorna datos, la otra no termina y, por ende, nunca retorna. never en TypeScript es muy útil precisamente para manejo de errores como se comentó en el ejemplo

      Jaime David Burbano Montoya

      Jaime David Burbano Montoya

      student•
      hace 5 años

      De pronto en el asincronismo puedes verle una aplicación más real

    Jhon Alexander Romero Gonzaga

    Jhon Alexander Romero Gonzaga

    student•
    hace 6 años

    Un poco confuso a la primera pero ya lo tengo casi entendido.
    Para los que se pregunten porque pone "any" en vez de "void" ahora explico. Una función al declararla de manera inferencial por lo general se encuentra con el tipo "any":

    // Es como tener tipo :any, pero // como no retorna nada lo asigna a tipo :void function unaFuncion() { // Código... }

    y cuando no retorna un valor esta función, la inferencia que hara typescript sera ponerla en tipo void

    // Si asignamos :any va a pasar lo mismo // que en las variables y podemos retornar // cualquier tipo de valor ya sea un string, // boolean, etc., o no retornar nada. function unaFuncion(): any { console.log("Hola mundo") }

    por esa razón el profesor pone de tipo any en la función para que pueda retornar o no retornar un valor.

      Juan Francisco Cevallos Valdivieso

      Juan Francisco Cevallos Valdivieso

      student•
      hace 5 años

      Exacto, void es una función que no retorna valor, mientras tanto en any podría hacerlo

      Javi Felices

      Javi Felices

      student•
      hace 5 años

      Creo que lo que nos ha podido descolocar es que ha usado más any que void, pero entiendo que void es simple, es un tipo que no devuelve nada, y como any tiene más particularidades por eso se ha usado más, y por eso entiendo que lo ha colocado en la primera función, que nos ha podido despistar.

      La función showFormatedInfo que se declara de forma inferida hace referencia a void

    John David Gómez Huertas

    John David Gómez Huertas

    student•
    hace 6 años

    No sé si fue que me perdí pero creo que al rededor del minuto 3:37 hubo un error porque estábamos viendo la declaración de que la función no retorna un valor dándole como tipo de retorno void y se colocó fue any :S

      Enrique Tecayehuatl

      Enrique Tecayehuatl

      student•
      hace 6 años

      Como dice @david en el comentario de arriba, solo usas never cuando en tu función vas a retornar nada o una excepción, mira esta respuesta

      JOSE LUIS GUILLÉN BLASCO

      JOSE LUIS GUILLÉN BLASCO

      student•
      hace 5 años

      @jdgomezh llevas razón. Debió indicar void.

    Alex Camacho

    Alex Camacho

    teacher•
    hace 5 años
    1. Void. Este tipo es lo opuesto al tipo anterior ya que representa la ausencia de tipo, es utilizado comúnmente como el tipo de retorno en funciones.

      // Explícito function showInfo (user: any): void { console.log('User info', user.id, user.userName, user.firstName) } showInfo({ id: 1, username: 'Alex', firstName: 'Alejandra' })

      También podemos trabajar con variables tipo void, estas variables solo aceptan valores null o undefined.

    2. Never. Es un tipo de dato especial en TypeScript, representa el tipo de valor que nunca ocurre, puede ser usado en funciones que lanzan excepciones o en funciones que nunca retornan un valor.

      function handleError (code: number, message: string): never { // Process your code here // Generate a message throw new Error(`${message}. Code: ${code}`) }
    Jayro Antonio Hernández Trejo

    Jayro Antonio Hernández Trejo

    student•
    hace 6 años

    Yo usaría void, en el escenario de crear una función logger, tal como la libreria 'debug', que la llamas y ejecuta la acción de hacer un log con un namespace.

    Y Never, en el escenario de construir un errorHandler o una función de un reloj que se mantiene ejecutando. como este ejemplo: https://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Qué buen ejemplo ! Eres el mejor !

    Stiven Trujillo

    Stiven Trujillo

    student•
    hace 4 años

    Por qué en el tipo explicito de void, pone any en la función? es así como funciona? o el profe se equivocó y va un void?

      Jean León

      Jean León

      student•
      hace 4 años

      creo que fue un error, debió poner void

      Irving Juárez

      Irving Juárez

      student•
      hace 4 años

      Si, creo que debió haber puesto un void

    Andrés González

    Andrés González

    student•
    hace 4 años

    entiendo el uso de never con excepciones y captura de errores. Pero con funciones que de entrada sabes que van a generar un ciclo infinito, en vez de usar never por qué simplemente no usar/dejar esa función?

    Francisco Javier Antúnez Durán

    Francisco Javier Antúnez Durán

    student•
    hace 6 años

    Estaría bien poder conocer con ejemplos algo mas prácticos, el uso de Void y sobre todo de Never, en el saber que no espero, la devolución de un dato, en un función miFuncion()... que importancia tiene colocare o no el : never.

      Jayro Antonio Hernández Trejo

      Jayro Antonio Hernández Trejo

      student•
      hace 6 años

      Yo usaria void, en el escenario de crear una funcion logger, como la libreria 'debug' por ejemplo, que la llamas y ejecuta la acción de hacer un log con un namespace.

      Y Never, en el escenario de construir un errorHandler o una funcion de un reloj que se queda ejecutando. como este ejemplo: https://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años

    Void y Never

    Tipo Void

    • void es lo opuesto de any, representa la ausencia de tipo
    • Comúnmente se usa como tipo de retorno en funciones

    Tipo Never

    • Representa el tipo de valor que nunca ocurre
      • Funciones que lanzan excepciones
      • Funciones que nunca retornan un valor
    Flavio Andres Pareja Torres

    Flavio Andres Pareja Torres

    student•
    hace 5 años

    En el caso que yo use algo como:

    La funcion retorna un string si encontro un dato, de otra forma retorna null.

    ¿Deberia usar Any o Void aqui?

      Nicolas Castañeda

      Nicolas Castañeda

      student•
      hace 5 años

      any ya que el tipo void no te permitira nada mas alla de un undefind.

      rodrigo david rodriguez

      rodrigo david rodriguez

      student•
      hace 5 años

      Any, ya que se define como cualquier tipo, el void en si es como vacío que sugiere que no devolverás nada. Pero te recomendaría usaría el operador OR para devolver uno u otro ya si estas seguro de que solo devolverá eso 2 tipos.

    Moisés Manuel Morín Hevia

    Moisés Manuel Morín Hevia

    student•
    hace 5 años

    Void, ausencia de valor, retorno nulo en las funciones, una variable con este tipo & asigarle null/undefined Never, Valor que no ocurre, cuando se lanzan excepciones.

    Santiago Cepeda

    Santiago Cepeda

    student•
    hace 5 años

    Debi{o haber colocado void en lugar de any en el primer ejemplo

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Sí, también estoy de acuerdo.

    Jean León

    Jean León

    student•
    hace 4 años

    ¿por qué existe strict en el Type Cheking de tsconfig.json? si typescript ya trae el tipado fuerte. y ¿por qué usar usamos strict: false en lugar de true?.

    Jeisson Santiago Cortes Ortiz

    Jeisson Santiago Cortes Ortiz

    student•
    hace 5 años

    en el primer ejemplo colocas la funcion como tipo any pero al yo colocar el cursor sobre la firma del metodo este me muestra que es any, quise colocar como void y efectivamente cuando coloco el cursor aparece como void, ambos caso son lo mismos?

      Alex Camacho

      Alex Camacho

      teacher•
      hace 5 años

      Lo que te está mostrando es de qué tipo es la función y ese tipo depende del tipo que tú le declares.

      Dije muchas veces tipo jaja

      Jeisson Santiago Cortes Ortiz

      Jeisson Santiago Cortes Ortiz

      student•
      hace 5 años

      A vale sino que el menciona esa funcion es de tipo void pero sigue dejando el any. Tal vez me confundi jeje

    Alex Leonardo Rodriguez Carvajal

    Alex Leonardo Rodriguez Carvajal

    student•
    hace 5 años

    excelente! nunca pense lo util que pudiera ser Typescript, ya no me da miedo 😂

    Jose Daniel Hernandez Quiceno

    Jose Daniel Hernandez Quiceno

    student•
    hace 6 años

    Esta clase confunde un poco, ibamos a ver void y never pero comenzamos con any(?) que era de la clase pasada

      Enrique Tecayehuatl

      Enrique Tecayehuatl

      student•
      hace 6 años

      Bueno any infiere por default el tipo de retorno en una función o en una variable, en clases pasadas comentaba sobre el "valor inferido" que sería lo que hace any en contraste cuando declaras void sería una manera de hacer explícito un tipo de retorno, si le dices a tu función retorna un void eso es hacerlo de "manera explícita" si le dices any, el compilador va a inferir si tienes un return o no, y a partir de ello asignará un tipo de retorno, por default si no tiene un return(tipo de valor retornado) retornará void.

      Javi Felices

      Javi Felices

      student•
      hace 5 años

      Pero la función showFormatedInfo que se declara de forma inferida hace referencia a void, al no devolver, si usáramos un return, su tipo inferido sería any, por ejemplo devolver el mismo objeto.

      Lo que está claro es que sino devuelve mejor usar void para controlar más el código, verdad?

    Edgar Javier Cruz López

    Edgar Javier Cruz López

    company_admin•
    hace 6 años

    Cuál es el objetivo o ventaja de utilizar o no never?

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Es un código más fuerte & son buenas prácticas.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads