CursosEmpresasBlogLiveConfPrecios

Funciones en TypeScript

Clase 19 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 min
  • 2
    Instalación de herramientas para TypeScript

    Instalación de herramientas para TypeScript

    05:47 min
  • 3

    Instalación de herramientas en Windows

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

    Navegación y refactorización

    04:37 min

Entorno de Desarrollo

  • 5
    El compilador de TypeScript

    El compilador de TypeScript

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

    El archivo de configuración de TypeScript

    07:22 min
  • 7
    Mi primer proyecto TypeScript

    Mi primer proyecto TypeScript

    05:09 min

Tipos en TypeScript

  • 8
    Tipado en TypeScript

    Tipado en TypeScript

    01:37 min
  • 9
    Number, Boolean y String

    Number, Boolean y String

    14:09 min
  • 10
    Any

    Any

    08:28 min
  • 11
    Void y never

    Void y never

    15:58 min
  • 12
    null y undefined

    null y undefined

    11:03 min
  • 13
    Object

    Object

    07:44 min
  • 14
    Array

    Array

    09:44 min
  • 15
    Tupla

    Tupla

    11:25 min
  • 16
    Enum

    Enum

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

    Unión de Tipos, Alias y Tipos Literales

    11:58 min
  • 18
    Aserciones de tipo

    Aserciones de tipo

    11:26 min
  • 19
    Funciones en TypeScript

    Funciones en TypeScript

    Viendo ahora
  • 20
    Resumen

    Resumen

    06:54 min

Tipos Personalizados

  • 21
    Interfaces

    Interfaces

    10:18 min
  • 22
    Interfaces: propiedades opcionales

    Interfaces: propiedades opcionales

    10:57 min
  • 23
    Extensión de interfaces

    Extensión de interfaces

    10:54 min
  • 24
    Clases

    Clases

    14:02 min
  • 25
    Clases públicas y privadas

    Clases públicas y privadas

    15:10 min
  • 26
    Métodos Get y Set

    Métodos Get y Set

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

    Herencia de clases y propiedades estáticas

    17:41 min
  • 28
    Resumen

    Resumen

    13:24 min

Módulos

  • 29
    Principios de responsabilidad única

    Principios de responsabilidad única

    15:03 min
  • 30
    Resolviendo módulos

    Resolviendo módulos

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

    Webpack y agrupación de Módulos

    14:02 min

Cierre

  • 32
    Cierre

    Cierre

    00:57 min
Tomar examen
    Bryan Alejandro Sánchez Ramírez

    Bryan Alejandro Sánchez Ramírez

    student•
    hace 6 años

    Ojo: un parámetro opcional siempre debe ir al final en dado caso que existan otros parámetros obligatorios.

      Juan Matus

      Juan Matus

      student•
      hace 6 años

      Podes pasar "undefined" para saltarte un parametro opcional en medio de parametros no opcionales.

      Luis Abdel Rangel Castro

      Luis Abdel Rangel Castro

      student•
      hace 5 años

      A required parameter cannot follow an optional parameter.

    Estanislao Albin Wotoszyn Grillo

    Estanislao Albin Wotoszyn Grillo

    student•
    hace 6 años

    Me parece que se equivocó al llamar flat array function, en realidad es fat arrow functions. Se las llama fat arrow por el tipo de flecha: -> simple => fat

      Enrique Devars

      Enrique Devars

      teacher•
      hace 6 años

      Gracias por el aporte :D

      Alan Quispe

      Alan Quispe

      student•
      hace 5 años

      buenisimo me estaba mareando con eso de array

    Jorge Méndez Ortega

    Jorge Méndez Ortega

    student•
    hace 6 años

    Se comentan solo los valores opcionales, pero nunca se comentaron los valores por defecto, les comparto un ejemplo

    /** * Listado de propiedades de una foto * * @param {string} title Nombre de la foto. * @param {string} date Fecha en la que fue tomada. * @param {SquareSize} size (Optional) Tamaño de la foto. * * @return {object} */ const dataPicture = (title: string, date: string, size: SquareSize = "100x100"): object => ({ title, date, size, });

    El ultimo parámetro size es opcional y siempre se tomara por defecto las medidas de 100x100

      Cristian Blandon

      Cristian Blandon

      student•
      hace 5 años

      Porque los default parameters son propios de JS, a diferencia de los opcionales que son propios de TS.

    Juan Diego Urbina Chuscano

    Juan Diego Urbina Chuscano

    student•
    hace 5 años

    falto parámetros Rest. Otra característica de TypeScript es la posibilidad de pasar una lista indefinida de valores y que los reciba un vector.

    El concepto de parámetro Rest se logra antecediendo tres puntos al nombre del parámetro:

    function sumar(...valores:number[]) { let suma=0; for(let x=0;x<valores.length;x++) suma+=valores[x]; return suma; } console.log(sumar(10, 2, 44, 3)); console.log(sumar(1, 2)); console.log(sumar());

    El parámetro 'valores' se le anteceden los tres puntos seguidos e indicamos que se trata de un vector de tipo 'number'. Cuando llamamos a la función le pasamos una lista de valores enteros que luego la función los empaqueta en el vector:

    console.log(sumar(10, 2, 44, 3)); console.log(sumar(1, 2)); console.log(sumar());

    La función con un parámetro Rest puede tener otros parámetros pero se deben declarar antes.

    Los parámetros Rest no pueden tener valores por defecto

      Platzi Team

      Platzi Team

      student•
      hace 5 años

      Gracias por el ejemplo compañero, muy util y sencillo

      César Palma

      César Palma

      student•
      hace 4 años

      solo el tipado es de typescript, rest parameter es javascript

    Boris Vargas Paucara

    Boris Vargas Paucara

    student•
    hace 6 años
    // Funciones en TypeScript // // Crear una Fotografia: JS // function createPicture(title, date, size) { // // title // } type SquareSize = '100x100' | '500x500' | '1000x1000' // Usamos TS, definimos tipos para paramentros function createPicture(title:string, date: string, size: SquareSize) { // Se crea la fotografia console.log('create Picture using', title, date, size); } createPicture('My Birthday', '2020-03-10', '500x500'); createPicture('Colombia', '2020-03-20'); // --&gt; Error // Parametros opcionales function createPicture(title?:string, date?: string, size?: SquareSize) { // Se crea la fotografia console.log('create Picture using', title, date, size); } // Flat Array Function let createPic = (title: string, date: string, size: SquareSize): object =&gt; { // return { // title: title, // date: date, // size: size // }; return { title, date, size }; }; const picture = createPic('Platzi session', '2020-03-10', '100x100'); console.log(picture);
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Buen código.

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años
    • Los parámetros en las funciones son tipados
    • Se pueden definir parámetros opcionales
    • El tipo de retorno puede ser un tipo básico, enum, alias, tipo literal o una combinación de ellos
    //*Crear una fotografía //*Usando TS, definimos tipos para parámetros type SquareSize = '100x100' | '500x500' | '1000x1000' function createPicture(title:string, date:string, size: SquareSize) { //*Se crea la fotografía console.log('Create picture using: ', title, date, size) } createPicture('My picture', '2021/10/22', '1000x1000') //!createPicture('Disney Vacation', '2018-03-12') //!Esto da un error porque necesita 3 parámetros //*Parámetros opcionales //*Solo hace falta escribir '?' al lado del parámetro function createPhoto(title:string, date:string, size?: SquareSize) { //*Se crea la fotografía console.log('Create photo using: ', title, date, size) } createPhoto('Foto1', '2020-10-10') //! El tercer parámetro es undefined //* Flat array function let createPic = (title:string, date:string, size:SquareSize):object => { return { title, date, size } } const picture = createPic('Platzi session', '2020-03-10', '100x100') console.log('Picture: ', picture)
    Jorge Cruz Perez

    Jorge Cruz Perez

    student•
    hace 5 años

    Tengo un conflicto o una duda, con el tipo :object o incluso Object, imprime directo toda la variable, me refiero a picture, pero si solo quisieramos imprimir title o date o size por separado ¿como le haria?, el conflicto es porque ts me reporta el error de que la propiedad no existe para el objeto picture, pero compila/trasnpila y genera el código js el cual se ejecuta sin problema.

      Santiago Mendoza

      Santiago Mendoza

      student•
      hace 4 años

      Creo que debes repasar la clase de object en los tipos de variables en TypeScript. https://platzi.com/clases/1869-typescript/27973-object/

    Andres David Sanchez

    Andres David Sanchez

    student•
    hace 5 años

    Esta característica de solo declarar la variable dentro de un objeto y este le asigna el nombre de la propiedad de forma automática se llama ShortHand property

    return { title, date, size }
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Thanks,

    Diego Fernando Caviedes Camaho

    Diego Fernando Caviedes Camaho

    student•
    hace 4 años

    => son Arrow functions

    Boris Köhli-Richter

    Boris Köhli-Richter

    student•
    hace 6 años
    let createPicture = (name: string, date?: string): object => ({name, date});
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Muy bien, lo hice igual.

    Federico Walovnik

    Federico Walovnik

    student•
    hace 5 años

    Funciones en TS

    • Los parametros en las funciones son tipados
    • Se pueden definir parametros opcionales
    • Se puede definir que tipo de datos devolvera la funcion
    type SquareSize = '100x100' | '500x500' | '1000x1000'; // el simbolo ? indica que el parametro es opcional. // Siempre que tengamos un parametros opcional tiene que encontrasrse al final // en caso de que no resivamos este parametro opc va a tomar el valor pode default function createPicture(title: string, date: string, size?: SquareSize = "100x100"){ } // Fat Array Function let createPic = (title: string, date: string, size?: SquareSize): object => { return { title, date, size } };
    Saul Vega Ramírez

    Saul Vega Ramírez

    student•
    hace 4 años

    El uso de parametros opcionales, elimina la necesidad de sobrecarga de metodos o funciones? es decir tener 3 firmas distintas de esta funcion, una con solo el primer parametro, otra con 2, otra con 3, porque si son opcionales, pues practicamente se puede invocar como si tuvieramos las 3 firmas declaradas. o cual sería la diferencia?

      Héctor Eduardo López Carballo

      Héctor Eduardo López Carballo

      student•
      hace 4 años

      Hola!

      No, la sobrecarga de métodos está pensada para poder cambiar el comportamiento del método dependiendo del parámetro que se recibe. Yo pienso que esto está principalmente destinado para que los desarrolladores no puedan meter cosas que no van y por lo tanto se puedan evitar fallos en el código.

    Griger Ratia

    Griger Ratia

    student•
    hace 4 años

    cuantas bondades!

    Carlos Javier Bazan Huaman

    Carlos Javier Bazan Huaman

    student•
    hace 5 años

    el poder en las funciones de typescript son el tipado y las funciones tipo flecha.

    Juan Esteban Galvis

    Juan Esteban Galvis

    student•
    hace 5 años

    Funciones

    /* DEFINIR TIPOS PARA LAS FUNCIONE */ function Funcion(param1: string, param2: number){} /* PARAMETROS OPCIONES CON ? */ function Funcion(param1?: string, param2?: number){} /* PRIMERO LOS OBLIGATORIOS Y LUEGO LOS OPCIONALES */ function Funcion(param1: string, param2?: number){}

    Array Function

    let funcion = (param1: string, param2: number) : object => { return {} } let funcion = (param1: string, param2: number) : void => {}
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Buen algoritmo.

    David Vargas Domínguez

    David Vargas Domínguez

    student•
    hace 6 años

    En Typescript, por defecto cuando se coloca parámetros a una función estos son requeridos.

    Para volver un parámetro como opcional, debemos colocar el símbolo ? después del nombre del parámetro.

    function buildName(firstName: string, lastName?: string) { // ... }

    Cabe recalcar que los parámetros opcionales deben ir después de los requeridos. Colocarlos de la siguiente es inválido.

    function buildName(firstName?: string, lastName: string) // Invalid
    Stiven Trujillo

    Stiven Trujillo

    student•
    hace 4 años

    Si no le asigno el tipo object a la función, TypeScript infiere que esa función retorna un objeto?

      Guillermo Rodas Gómez

      Guillermo Rodas Gómez

      student•
      hace 4 años

      Hola Stiven, Teniendo como ejemplo el siguiente código:

      function createObject(id: number, title: string){ return {id, title}; } const obj = createObject(1, 'Test'); console.log(obj);

      Si posicionamos el cursor sobre la función

      2021-09-27_10-57.png
      ) Typescript infiere que retorna un Object de Js, por tanto podemos acceder a las propiedades del mismo, si queremos que retorne un object debemos hacerlo explicitamente.

      function createAnotherObject(id: number, title: string): object{ return {id, title}; }

      Te dejo el link del código en el playground de typescript. Éxitos!

    Alessandra Amicarella

    Alessandra Amicarella

    student•
    hace 4 años

    Al momento de type e interface, que los diferencia o en que situacion podemos/deberiamos usar el uno o el otro?

    Mauro Eduardo Sánchez Simental

    Mauro Eduardo Sánchez Simental

    student•
    hace 4 años

    Alguien que me pueda apoyar de como trabajar una dependencia que no este soportada TS y la tengo que incluir en mi proyecto TS como esta npm i conekta

    cindy yurley caceres parada

    cindy yurley caceres parada

    student•
    hace 5 años

    en typescript tambien podemos usar const hello = () => {}; ????

      Juan David Sánchez

      Juan David Sánchez

      student•
      hace 5 años

      Claro que sí. El tipo de dato que se va a inferir para la variable hello es () => void.

      Mauricio Galvez

      Mauricio Galvez

      student•
      hace 4 años

      Puedes tipar las arrow functions sin problema:

      const sum = (a: number, b: number): number => a + b;

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