funciones variables tipos - keblato/TutorialesTalleres-Angular GitHub Wiki
Funciones Variables Tipos
Referencia: Documentación "Basic Types" |
---|
Para ejecutar los ejemplos siguientes utilice stackblitz funciones
- Operaciones sobre number
- Declaración de una Función simple
- Función anónima
- Función módulo y parámetro opcional
- Arreglo de string y un ciclo
- Funciones como objetos
Operaciones sobre number
var vNumber2: number = 2;
var respuesta: number = 0 ;
respuesta = vNumber1 + vNumber2 ;
console.log("Suma: "+respuesta);
respuesta = vNumber1 - vNumber2; console.log("Diferencia: "+respuesta);
respuesta = vNumber1*vNumber2;
console.log("Multiplicación: "+respuesta);
respuesta = vNumber1/vNumber2;
console.log("Cociente: "+respuesta);
respuesta = vNumber1%vNumber2;
console.log("Residuo: "+respuesta);
vNumber1++;
console.log("Valor de vNumber1 después de incrementar "+vNumber1);
vNumber2--;
console.log("Valor de vNumber2 después de decrementar "+vNumber2);
Ir al Inicio |
---|
Declaración de una función simple
En el siguiente código declaramos la función sumar
. Está definida con dos parámetros de tipo number
y retorna un number
.
function sumar(x: number, y: number): number {
return x+y;
}
console.log(sumar(5,5))
Utilizando el mismo ejemplo, para ilustrar el sistema de tipos, vamos a cambiar la función para que devuelva el resultado de la suma en un string
. Note que estamos usando la palabra reservada let
para definir una variable local, de tipo number
, a la función. También usamos el método toString()
, predefinido para las variables de tipo number
function sumar(x: number, y: number): string {
let result: number = x+y;
return result.toString();
}
console.log(sumar(5,5))
Ir al Inicio |
---|
Función anónima
Las funciones anónimas son funciones que no tienen nombre. En el siguiente ejemplo, una función anónima se asigna a una variable llamada msg
. Luego la variable se utiliza para invocar la función.
var msg = function() {
return "Hola Mundo";
}
console.log(msg())
Ir al Inicio |
---|
Función módulo y parámetro opcional
Una función puede definir parámetros opcionales, es decir que al llamar la función, puede no estar el parámetro. En el siguiente ejemplo, el parámetro opcional es modulo
. Se indica que es opcional con el símbolo ?
.
El ejemplo también muestra el uso del operador módulo: %
. Si no se da el valor del módulo se devuelve el residuo de dividir por 2.
function fmodulo(x: number, modulo?: number): number {
if (modulo && modulo > 0) {
return x % modulo;
} else {
return x % 2;
}
}
console.log(fmodulo(35, 30));
console.log(fmodulo(35));
Ir al Inicio |
---|
Arreglo de string y un ciclo
De manera general un arreglo se puede declarar:
var nombrearreglo: tipoelementos []
Y para inicializar:
nombrearreglo = [elemento1, elemento2, ...]
Por ejemplo, tenemos la declaración del arreglo de string
llamado lista
y al mismo tiempo su inicialización.
En el siguiente ejemplo, tenemos un ciclo estándar sobre el arreglo que lo recorre desde la posición 0 hasta su longitud:
var list :string[] = ["juan","pedro","maria","luisa"];
function concatenateNames(list: string[]) {
let concatenatedNames = "";
for (let index = 0; index < list.length; index++) {
concatenatedNames += list[index] + "";
}
return concatenatedNames;
}
El siguiente ejemplo es una variante del anterior en donde se utiliza forEach
para aplicar una función sobre cada uno de los elementos de la lista:
function concatenateNamesForEach(list: string[]) {
let concatenatedNames = "";
list.forEach(function(value) {concatenatedNames += value +" "}) ;
return concatenatedNames;
}
console.log(concatenateNamesForEach(list));
La función dentro del forEach
también puede definirse con el operador =>
function concatenateNamesForEach(list: string[]) {
let concatenatedNames = "";
list.forEach(value => {concatenatedNames += value +" "}) ;
return concatenatedNames;
}
console.log(concatenateNamesForEach(list));
El siguiente ejemplo es otra variante en donde se utiliza map
para aplicar una función definida con el operador =>
sobre cada uno de los elementos de la lista:
function concatenateNamesMap(list: string[]) {
let concatenatedNames = "";
list.map(value => {concatenatedNames += value +" "});
return concatenatedNames;
}
console.log(concatenateNamesMap(list));
Otra manera es utilizando la función reduce
la cual invoca una función "reducidora" por cada uno de los elementos, las funciones reducidoras pueden llegar a tener 4 parámetros:
- acomulador
- valoractual
- indiceactual
- arreglo
El siguiente ejemplo es una implementación de la concatenación de un arreglo utilizando reduce
con un acumulador y el valor actual:
function concatenateNamesReduce(list: string[]) {
return list.reduce(conc);
}
function conc(concatenatedNames, valor) {
return concatenatedNames + " " + valor;
}
console.log(concatenateNamesReduce(list));
La función dentro del reduce
también puede definirse con el operador =>
function concatenateNamesReduce(list: string[]) {
return list.reduce((concatenatedNames, valor) => concatenatedNames + " " + valor);
}
console.log(concatenateNamesReduce(list));
Ir al Inicio |
---|
Funciones como objetos
Como se vio en la función anónima en TypeScript/JavaScript las funciones también son objetos. En los siguientes ejemplos podemos ver algunas de las funcionalidades que esto nos trae.
Funciones que retornan una función
function hola() {
console.log('Hola');
function mundo(){
console.log(' Mundo!');
}
return mundo;
}
var s = hola();
console.log('mundo: ' + s);
Al ejecutarlo se imprime lo siguiente en consola:
Hola
mundo: function mundo(){ console.log(' Mundo!'); }
En el siguiente ejemplo se ejecuta al función mundo
que retorna la función hola:
function hola() {
console.log('Hola');
function mundo(){
console.log(' Mundo!');
}
return mundo;
}
var s = hola();
console.log('break');
s();
En consola:
Hola
Break
Mundo
Pregunta: Que sale en consola al ejecutar el siguiente código? |
---|
function hola() {
console.log('Hola');
function mundo(){
console.log(' Mundo!');
}
return mundo();
}
var s = hola();
console.log('break');
s();
Funciones por parámetro
De la misma manera las funciones también se pueden enviar por parámetro:
function hola() {
console.log('Hola');
function mundo(){
console.log(' Mundo!');
}
return mundo;
}
function funcionPorParametro(f : function){
f()
f()()
}
funcionPorParametro(hola);
En consola:
Hola
Mundo
Ir al Inicio |
---|