Las funciones son nativas de JavaScript y esencialmente funcionan igual en TypeScript. Sin embargo, este último, con su sistema de tipado, nos ayudará a llevar a cabo una implementación más segura:
Podemos definir que los argumentos de la función tengan un determinado tipo de dato (o más de uno si se usa Union Types):
En el argumento createdAt se indica que es de tipo Date en alusión al objeto Date propio de JavaScript y no a un tipo de dato como string o number. Son diferentes las definiciones.
Cuando hagamos uso de nuestra función, TypeScript comprobará que le envíes todos los parámetros en orden y con el tipo de dato que se declaró en la función:
En Visual Studio Code, si dejas el cursor sobre el nombre de la función que vas a invocar, te mostrará un mensaje con los detalles de la función, lo que espera como parámetros y lo que devolverá indicando además el orden y el tipo de dato de cada variable.
Si queremos que un argumento sea opcional de enviar, podemos usar el modificador ? junto al nombre del argumento:
typeSizes='s'|'M'|'L'|'XL';//Alias y Tipos LiteralesfunctioncreateProductJson( title:string, createdAt:Date, stock?:number, size?:Sizes){/*Código de la función*/}
Nota: cuando definamos argumentos opcionales en una función, estas deben ubicarse al final, si no TypeScript nos indicará un **error, ya que podría haber confusiones al momento de invocar la función y enviar los respectivos parámetros: