cosas de ts
TRANSCRIPT
-
8/19/2019 Cosas de TS
1/154
-
8/19/2019 Cosas de TS
2/154
ámb
Yo: TypeScript
J.C. Lama
1
-
8/19/2019 Cosas de TS
3/154
Esta página se ha dejado en blanco intencionalmente.
3
-
8/19/2019 Cosas de TS
4/154
http://creativecommons.org/licenses/by-sa/3./es/
!
http://creativecommons.org/licenses/by-sa/3.0/es/http://creativecommons.org/licenses/by-sa/3.0/es/
-
8/19/2019 Cosas de TS
5/154
Jos" Carlos Lama #once
#rimera edici$n: oct%bre !1&
'ersi$n (ype)cript: 1.1..1
&
-
8/19/2019 Cosas de TS
6/154
A mis padres, mis hermanos y mi pareja.
*
-
8/19/2019 Cosas de TS
7/154
Esta página se ha dejado en blanco intencionalmente.
+
-
8/19/2019 Cosas de TS
8/154
Esta página se ha dejado en blanco intencionalmente.
1
-
8/19/2019 Cosas de TS
9/154
0. INTRODUCCIÓN.....................................................................................12
0.1 ¿A QUIÉN VA DIRIGIDO ESTE LIBRO..............................................................................1!0.! "AVAS#RI$T..............................................................................................................1!
0.2.1 Historia.........................................................................................................120.2.2 Ámbito de ejecución.....................................................................................12
0.2.3 Compatibilidad con navegadores..................................................................130.% T Y$ES#RI$T.............................................................................................................1%
0.3.1 ¿Por qu !"pe#ript$......................................................................................130.3.2 %u es " no es !"pe#cript.............................................................................130.3.3 !# es .........................................................................................................1'0.3.' (equisitos.....................................................................................................1'
1. GENERALIDADES...................................................................................16
1.1 SENTEN#IAS.............................................................................................................1&1.! SENSIBLE A LAS 'AY(S#ULAS......................................................................................1&1.% $ALABRAS RESERVADAS..............................................................................................1&1.) UNI#ODE.................................................................................................................1&1.* #O'ENTARIOS..........................................................................................................1&
2. CÓMO EMPEZAR....................................................................................18
!.1 INTRODU##I+N.........................................................................................................1,!.! EDITORES................................................................................................................1-!.% DIVIDIR EL $ROYE#TO.................................................................................................!1!.) LIBRERAS E/TERNAS..................................................................................................!!
3. DEPURACIÓN.........................................................................................24
%.1 INTRODU##I+N.........................................................................................................!)%.! LA #ONSOLA............................................................................................................!)
%.% DE$URANDO TS........................................................................................................!*%.) $UNTOS DE RU$TURA.................................................................................................!&%.* EVALUADOR DE E/$RESIONES......................................................................................!
4. VARIABLES............................................................................................30
).1 INTRODU##I+N.........................................................................................................%0).! NO'BRES DE VARIABLES.............................................................................................%0).% INI#IALIA#I+N..........................................................................................................%0).) 2'BITO DE UNA VARIABLE...........................................................................................%1).* #ONSTANTES............................................................................................................%1
5. TIPOS...................................................................................................32
*.1 VARIABLES #ON TI$O.................................................................................................%!*.! TI$OS $RI'ITIVOS Y ENVOLTURA....................................................................................%!).2.1 *niciali+ación literal.......................................................................................33
*.% O TROS TI$OS...........................................................................................................%*).3.1 ,oid...............................................................................................................3)).3.2 -ull...............................................................................................................3)).3.3 nde/ned.....................................................................................................3)).3.' num............................................................................................................3)).3.) unction........................................................................................................3)).3. rra".............................................................................................................3).3.4 5bject...........................................................................................................3
*.) TI$OS NO'BRADOS Y RE3EREN#IA.................................................................................%
*.* IN3EREN#IA DE TI$OS.................................................................................................%).).1 *n6erencia b7sica...........................................................................................34
1!
-
8/19/2019 Cosas de TS
10/154
).).2 8presiones tipadas por el conte8to.............................................................34*.& EL 'E"OR TI$O #O'(N...............................................................................................%,
)..1 n" como tipo general..................................................................................39)..2 :;.................................................................................................................39)..3 ntre primitivos............................................................................................39)..' ntre primitivos " envolturas........................................................................3<
)..) ntre tipos re6erencia...................................................................................3<*. TY$EO3....................................................................................................................%-*., EL USO DE LA 'E'ORIA..............................................................................................)0
6. OPERADORES........................................................................................42
&.1 O$ERADORES UNARIOS...............................................................................................)!.1.1 5peradores == " >>.......................................................................................'2.1.2 5peradores =? @............................................................................................'3.1.3 5perador A...................................................................................................'3.1.' 5perador B....................................................................................................'3.1.) 5perador delete............................................................................................''.1. 5perador void...............................................................................................''
&.! O$ERADORES BINARIOS..............................................................................................)).2.1 5perador de asignación................................................................................''.2.2 5peradores lógicos.......................................................................................')
&.!.!.1 4567e e8 TS.............................................................................................................)*&.!.!.! Oper59or AND........................................................................................................)*&.!.!.% Oper59or OR..........................................................................................................)&
.2.3 5peradores aritmticos................................................................................'4&.!.%.1 Oper59ore7 y ;....................................................................................................)&.!.%.! Oper59ore7 < y =.....................................................................................................)&.!.%.% Oper59or >............................................................................................................)
.2.' 5peradores de bits.......................................................................................'9&.!.).1 Oper59ore7 6?@ico7 it 5 it...................................................................................),
&.!.).! Oper59ore7 y CC.............................................................................................),.2.) 5peradores relacionales...............................................................................'9
&.!.*.1 Oper59ore7 C C.....................................................................................),&.!.*.! Oper59ore7 y F..............................................................................................)-&.!.*.% Oper59ore7 y F.........................................................................................)-
.2. 5perador = de concatenación......................................................................)1.2.4 5perador in...................................................................................................)1.2.9 5perador condicional terciario......................................................................)1
7. CONTROL DEL FLUO..............................................................................54
.1 INTRODU##I+N.........................................................................................................*).! SELE#TIVAS..............................................................................................................*)
4.2.1 i6...................................................................................................................)'4.2.2 sitcD...........................................................................................................))
.% I TERATIVAS...............................................................................................................*&4.3.1 Dile.............................................................................................................)4.3.2 do>Dile........................................................................................................)4.3.3 6or.................................................................................................................)4.3.' 6or>in.............................................................................................................)4
.) SENTEN#IAS (TILES $ARA LOS BU#LES...........................................................................*4.'.1 breaE............................................................................................................)44.'.2 continue........................................................................................................)9
8. FUNCIONES...........................................................................................60
,.1 INTRODU##I+N.........................................................................................................&0,.! DE#LARA#I+N...........................................................................................................&0
1&
-
8/19/2019 Cosas de TS
11/154
,.% $AR2'ETROS DE UNA 3UN#I+N....................................................................................&09.3.1 Par7metros opcionales " por de6ecto............................................................19.3.2 F7s par7metros............................................................................................19.3.3 Par7metros por valor o por re6erencia..........................................................2
,.%.%.1 $or 56or.................................................................................................................&!,.%.%.! $or re4ere8ci5.........................................................................................................&%
,.%.%.% $57o por copi5 re4ere8ci56......................................................................................&%,.) VALORES DE RETORNO...............................................................................................&),.* INVO#ANDO 3UN#IONES..............................................................................................&),.& SOBRE#ARGA...........................................................................................................&*,. 3UN#IONES AN+NI'AS...............................................................................................&&
9.4.1 8presiones lambda G6unciones ecDaI.........................................................9.4.2 !ipado literal de una 6unción........................................................................49.4.3 !ipado mediante objetos literales.................................................................49.4.' Je/nición de 6unción por par7metro.............................................................99.4.) Conte8to.......................................................................................................99.4. unciones anónimas autoejecutables...........................................................<
,., 3UN#IONES QUE DEVUELVEN 3UN#IONES........................................................................&-,.- 3UN#IONES ES$E#IALIADAS........................................................................................0,.10 #O'$ARANDO 3UN#IONES...........................................................................................0
!. ENUMERADOS.......................................................................................72
-.1 INTRODU##I+N.........................................................................................................!-.! OBTENIENDO EL NO'BRE DEL VALOR.............................................................................!
10. CLASES.................................................................................................74
10.1 QUÉ ES UNA #LASE....................................................................................................)10.! #REA#I+N DE #LASES................................................................................................)10.% #ONSTRU#TORES......................................................................................................*10.) ESTADO Y #O'$ORTA'IENTO.......................................................................................*
10.'.1 l estado.......................................................................................................4)10.).1.1 Otr5 4orH5 9e 9ec65r5r 5trito7............................................................................&
10.'.2 l comportamiento........................................................................................4410.'.3 5perador tDis................................................................................................49
10.).%.1 #o8teJto................................................................................................................ ,10.* EN#A$SULA'IENTO....................................................................................................,0
10.).1 Ketters " setter implLcitos.............................................................................9210.& KEREN#IA................................................................................................................,%
10..1 l operador super.........................................................................................9310..2 #obreescritura..............................................................................................9)
10.&.!.1 Soree7critr5 9e Hto9o7.................................................................................... ,*10. AGREGA#I+N Y #O'$OSI#I+N......................................................................................,&10., $OLI'OR3IS'O.........................................................................................................,10.- #ONVERSI+N DE TI$OS M#ASTING................................................................................,10.10 LIGADURA DIN2'I#A..................................................................................................,-10.11 INSTAN#EO3.............................................................................................................-010.1! EST2TI#OS...............................................................................................................-0
10.12.1 Constantes mediante est7ticos.....................................................................
-
8/19/2019 Cosas de TS
12/154
11.) INTER3A#ES LITERALES................................................................................................-11.* INTER3A#ES #O'O 3UN#IONES.....................................................................................-11.& 3USIONANDO INTER3A#ES............................................................................................-,11. #O'$ROBAR SI UNA #LASE I'$LE'ENTA UNA INTER3A.....................................................-,
12. GEN"RICOS.........................................................................................100
1!.1 INTRODU##I+N.......................................................................................................1001!.! RESTRI##IONES EN LOS $AR2'ETROS..........................................................................1011!.% GENÉRI#OS EN INTER3A#ES.......................................................................................10!1!.) 3UN#IONES GENÉRI#AS.............................................................................................10%1!.* #O'$ARANDO GENÉRI#OS.........................................................................................10%
13. TIPADO ESTRUCTURAL.........................................................................104
1%.1 '2S SOBRE LA #O'$ARA#I+N DE OB"ETOS...................................................................10)1%.! #O'$ARANDO #LASES..............................................................................................10)1%.% #O'$ARANDO INTER3A#ES........................................................................................10*1%.) #LASES I'$LE'ENTANDO OTRAS #LASES......................................................................10&1%.* INTER3A#ES KERENDANDO DE #LASES..........................................................................10
14. CONTROL DE ERRORES.........................................................................108
1).1 INTRODU##I+N.......................................................................................................10,1).! TI$OS DE ERRORES..................................................................................................10,1).% LANANDO ERRORES................................................................................................10-1).) LANANDO ERRORES 'ANUAL'ENTE...........................................................................1101).* 3INALLY.................................................................................................................110
15. DOM...................................................................................................112
1*.1 INTRODU##I+N.......................................................................................................11!1*.! DO#U'ENT............................................................................................................11!
1).2.1 #eleccionar elementos................................................................................1121*.!.1.1 @etE6eHe8tByI9M................................................................................................. 11%1*.!.1.! @etE6eHe8t7ByT5@N5HeM.................................................................................... 11%
1*.% #REAR ELE'ENTOS..................................................................................................11%1*.) ELI'INAR ELE'ENTOS...............................................................................................11%1*.* A##ESO A LOS ATRIBUTOS.........................................................................................11)
16. EVENTOS............................................................................................116
1&.1 INTRODU##I+N.......................................................................................................11&1&.! EVENTOS VISUALES..................................................................................................11&
1.2.1 ase de captura..........................................................................................111.2.2 ase de objetivo..........................................................................................114
1.2.3 ase de burbuja..........................................................................................1141.2.' Madir respuesta a los eventos...................................................................1141.2.) Par7metros de los Dandlers........................................................................1191.2. !arget " current!arget................................................................................1191.2.4 l uso del tDis.............................................................................................11<1.2.9 Parar la propagación de un evento.............................................................11<1.2.< Parar la propagación Dacia otros listeners del mismo elemento " evento. .120
1&.% EVENTOS NO VISUALES.............................................................................................1!0
17. AA#...................................................................................................122
1.1 INTRODU##I+N.......................................................................................................1!!1.! #LASE DE UTILIDAD.................................................................................................1!!
1.% ESTADOS DE LA $ETI#I+N Y RES$UESTA DEL SERVIDOR....................................................1!)18. MÓDULOS...........................................................................................126
1+
-
8/19/2019 Cosas de TS
13/154
1,.1 INTRODU##I+N.......................................................................................................1!&1,.! $ARTES DE UN '+DULO............................................................................................1!1,.% I'$ORTAR TI$OS......................................................................................................1!1,.) UN 'IS'O '+DULO EN DISTINTOS AR#KIVOS................................................................1!,1,.* 3USIONANDO '+DULOS #ON 3UN#IONES Y ENU'S.........................................................1!,
19.).1 unciones....................................................................................................12<
19.).2 nums.........................................................................................................12<1,.& '+DULOS E/TERNOS MNODE. "S Y REQUIRE. "S...............................................................1!-1,. TRABA"ANDO #ON LIBRERAS E/TERNAS.......................................................................1%0
19.4.1 rcDivos de de/niciones.............................................................................1311,., EVITAR QUE UNA #LASE $UEDA SER SU$ER#LASE...........................................................1%1
1!. ANE#O I. ARRA$S................................................................................134
1-.1 INTRODU##I+N.......................................................................................................1%)1-.! A TRIBUTOS............................................................................................................1%*
1
-
8/19/2019 Cosas de TS
14/154
20.2.1' topperCase...............................................................................................1'420.2.1) trim.............................................................................................................1'9
21. ANE#O III. SON...................................................................................150
!1.1 LA #LASE "SON......................................................................................................1*021.1.1 Je - a ...............................................................................................1)0
21.1.2 Je a -...............................................................................................1)1
!!
-
8/19/2019 Cosas de TS
15/154
-
8/19/2019 Cosas de TS
16/154
1.!.3 Compatibilidad con navegadores
=esgraciadamente para los desarrolladores y %s%arios no todos los navegadores interpretan J)de la misma orma. %n%e se han hecho importantes progresos en los Altimos tiempos4 sig%en%edando restos de lo %e se ha demostrado ser %na chap%,a. 9avegadores como BE+ y anteriores no
son compatibles con todas las caractersticas del estándar y otras las han adaptado. Es importante %etodo n%estro c$digo sea ejec%table en la mayora de navegadores para tener la mayor cantidad de%s%arios potenciales disponibles.
1.3 TpeScript(ype)cript 5a partir de ahora ()6 es %n leng%aje de programaci$n de c$digo abierto
desarrollado por 2icrosot.
La primera versi$n se liber$ en !1! y a echa de la edici$n del libro la Altima es la 1.1..1.)% estándar es el EC2)cript como lo es tambi"n de y ction)cript 5a partir de ahora )6.
() es %n s%perconj%nto de J) %e le proporciona %na capa de orientaci$n a objetos. #or ello no eisteningAn navegador %e ejec%te () de orma nativa sino %e todo el c$digo es trad%cido a J).
Entre s%s mejores caractersticas está la compatibilidad con todo el c$digo J) eistente.#odemos %sar libreras como j%ery sin problemas p%es () es J).
1.3.1 D#or %" (ype)ript
J) se diseF$ para ser %n leng%aje con el %e desarrollar pe%eFas %ncionalidades en la ?eb.Con el paso del tiempo y la llegada de las aplicaciones ricas en Bnternet 5GB6 s% %so no s$lo se haetendido4 sino %e el propio leng%aje se ha visto s%perado por las circ%nstancias. Los proyectos soncada ve, más complejos y necesitan mejores %ncionalidades. 9o es %n leng%aje pensado paragrandes aplicaciones por lo %e la diic%ltad para desarrollarlas ha ido en a%mento4 siendo %nverdadero %ebradero de cabe,a por s%s partic%laridades como s% sing%lar orientaci$n a objetosmediante prototipos. #or otro lado no es posible hacer borr$n y c%enta n%eva y dejar de darle soporte
por%e está tan arraigado al m%ndo ?eb %e prácticamente el H de las ?ebs act%ales no%ncionaran4 lo %e obligara a hacer n%evos desarrollos. nte esta tesit%ra y la cada ve, más %erte
presi$n de la com%nidad4 se intentaron hacer cambios para4 de cierta manera4 mitigar estos problemas%e ha venido arrastrando. lternativas como Coe)cript o Live)cript s%rgieron para este prop$sitoa%n%e con %n "ito moderado. 2icrosot ha decidido dar %n paso al rente y lan,ar s% propiaadaptaci$n4 %e introd%ce cambios signiicativos como el tipado estático4 clases4 interaces4 etc4 con%na sintais similar a Java.
1.3.! %" es y no es (ype)cript
() no es nada por s mismo4 p%esto %e s% c$digo no se compila ni se interpreta4 sino %e setrad%ce a J). Ina ve, trad%cido4 estaramos ante c$digo J) nativo interpretable por c%al%ier
sot?are %e lo permita4 como %n navegador ?eb.
!*
-
8/19/2019 Cosas de TS
17/154
1.3.3 () es J)
0ay ciertas caractersticas de () %e son trad%cibles a J) de %na orma más o menos análoga4como las clases. 0ay otras4 en cambio4 %e no4 como las interaces4 las c%ales no generan c$digoalg%no4 es decir4 s$lo eisten para comprobaciones en tiempo de compilaci$n.
() %sa caractersticas de EC2)cript 34 ; y *. lg%nas de ellas las trad%ce de orma nativa aJ)4 como los getters y setters implcitos de la EC2)cript ;4 y con otras no %sa las caractersticasnativas de J)4 como los m$d%los de la EC2)cript *. La EC2)cript * describe el %so de m$d%loscomo %na caracterstica n%eva de J) con %na sintais determinada. Con () tambi"n se p%eden %sar m$d%los4 pero si lo hacemos podemos observar %e no trad%ce el c$digo a la sintais del estándar4sino %e ni si%iera hace %na trad%cci$n. Eso es as para poder %sar lo n%evo de la EC2)cript * ennavegadores no compatibles. #ero no todas están presentes en (). s% ve, posee caractersticas
propias no determinadas en EC2)cript 5por el momento6 como los gen"ricos.
9o todos los navegadores ?ebs con compatibles con todas las %ncionalidades de todos losestándares de EC2)cript4 por lo %e hay %e tener c%idado a la hora escribir n%estro c$digo ()4
p%es el %so de ciertas caractersticas lo hara inejec%table en alg%nos navegadores.
% podemos ver %na lista de EC2)cript ; y * y s% compatibilidad.
http://
-
8/19/2019 Cosas de TS
18/154
admite. El compilador se aFade de orma a%tomática a la variable #(0 del sistema por lo %e podemos invocarlo desde c%al%ier parte.
#ara compilar () man%almente lo normal sera escribir:
tsc -target E); --removeComments --declaration --o%t app.ts app.js
--target E); : Especiica sobre %" estándar %eremos compilar. Las opciones son: E)34 E);y E)*.
--declaration: genera el archivo de deiniciones d.ts Es %na herramienta eperimental y p%edeallar con el %so de caractersticas avan,adas.
--o%t app.ts app.js: Esto trad%cirá el archivo app.ts a app.js. y todas las reerencias %e sehagan desde app.ts si n%estra aplicaci$n son varios archivos.
--removeComments : Elimina todos los comentarios.
9ormalmente esto no es necesario pero es importante saberlo por si %eremos %tili,arlo.
3
-
8/19/2019 Cosas de TS
19/154
2.!eneralidades
2.1 SentenciasIna sentencia es %na lnea de c$digo escrita en %n leng%aje de programaci$n. En () se
delimitan con el smbolo NK 5p%nto y coma6 como norma general4 a%n%e es opcional. Larecomendaci$n es escribirlo siempre para no perder la cost%mbre c%ando %semos otros leng%ajes
p%es en la mayora s es obligatorio. (ambi"n hace el c$digo más legible ya %e estamos marcando
de orma eplcita el inal de la sentencia y sabemos eactamente d$nde empie,a la n%eva.
2.2 Sensible a las "a#sculas() es case sentitive. 0ay %e tener c%idado con esto por%e no es lo mismo escribir como
nombre de variable cosa %e Cosa o CO)4 son totalmente distintas y no tienen relaci$n alg%na. Esaplicable a %nciones4 clases4 interaces4 etc4 es decir4 a todo el leng%aje.
2.3 $alabras reservadasEl leng%aje especiica %na serie de palabras reservadas %e orman parte de s% sintais. Pstas
no p%eden ser %sadas para otra cosa %e no sea para lo %e se diseF$ y no se permiten nombre devariables4 %nciones4 etc llamadas de la misma orma:
brea
-
8/19/2019 Cosas de TS
20/154
0ay dos tipos de comentarios: en lnea y en blo%e. Los comentarios en lnea se constr%yenempe,ando con %na doble barra //. (odo lo %e escribamos detrás de esa doble barra será ignorado
por el compilador.
%% E&'( )& *+ ,(-)+'/(
e7to 8o y pro9ce 8 error
El comentario en blo%e se empie,a con /R y se acaba con R/
% E&'( )& *+ ,(-)+'/( )&'( )& ,(+'+*,+ ) ,(-)+'/(+')/(/ )+ ('/& +)& %
3&
-
8/19/2019 Cosas de TS
21/154
3.(ó"o e"pe)ar
3.1 IntroducciónC%ando se generan los archivos .js a partir de los .ts4 se deben incl%ir como si de c%al%ier
otro .js se tratara. nte %na estr%ct%ra de %na página ?eb básica:
tH6Ce59C
tit6eC $(T)S,/'=tit6eC=e59Co9yC=o9yC
=tH6C
Los archivos .js se incl%yen dento de SheadTS/headT de la sig%iente orma:
7cript type9'):'%;
-
8/19/2019 Cosas de TS
22/154
#ara s$lo tener %e incl%ir %n archivo .js es preerible compilar y agr%par todo n%estro (). Esalgo %e se p%ede hacer desde %n editor de () o man%almente desde el compilador con la consola decomandos. #ara ello es necesario %e las reerencias sean correctas4 es decir4 %e cada archivo .tsimporte los otros .ts %e necesite para %ncionar. Esto se verá en el capt%lo de 2$d%los.
3.2 *ditoresGealmente no es obligatorio %n editor de () p%es podemos escribir n%estro c$digo en %n
archivo de teto plano y compilarlo a trav"s de la lnea de comandos. #ero lo %e %eremos esacilitarnos las cosas4 no complicárnoslas.
In editor nos ay%da coloreando las palabras reservadas del leng%ajeN mostrándonos loserrores sintácticosN a%tocompletando n%estro c$digo con s%gerencias segAn vayamos escribiendo4
etc. demás de compilar () de orma a%tomática.(enemos %e elegir %n editor para empe,ar. Gealmente hay pocos disponibles.
2icrosot orece %no online en:
http://???.typescriptlang.org/#laygro%nd
#ero no sirve para proyectos reales ya %e no organi,a por archivos ni permite s% g%ardado.0ay %e verlo como %n entorno de pr%ebas rápidas donde podemos4 sin necesidad de instalar nada4ejec%tar pe%eFos tro,os de c$digo para observar s% comportamiento.
2icrosot tiene s% propio B=E para trabajar con () llamado 'is%al )t%dio. )irven lasversiones de !1! y !13 para las %e hay %e descargar %na etensi$n e instalarla. El granincoveniente es %e no se enc%entra de orma grat%ita. #or ello recomiendo %na alternativa llamada(ypEcs. Es %n pl%gin de Eclipse4 conocido por ser la herramienta de desarrollo para Java más %sada.
Los re%isitos para %sar (ypEcs son tener instalado Java >4 Eclipse Uepler &.3 y 9ode.js.+.1 o versiones s%periores de las anteriores citadas. )e p%ede descargar desde s% ?eb oicial:http://typecsdev.com/
Ina ve, c%mplidos los re%isitos4 debemos abrir Eclipse 5en la echa de escrit%ra de este librola Altima versi$n es &.& L%na6. Ina ve, hayamos creado el workspace4 arrastramos el icono hacian%estro Eclipse abierto.
3+
http://www.typescriptlang.org/Playgroundhttp://typecsdev.com/http://www.typescriptlang.org/Playgroundhttp://typecsdev.com/
-
8/19/2019 Cosas de TS
23/154
=e la ?eb http://typecsdev.com/do?nload.html
ceptamos la licencia y nos pedirá permisos para reiniciar Eclipse. ceptamos y esperamos.
Ina ve, hecho4 creamos n%estro proyecto en 7ile-T 9e? #royect
M elegimos #roject del desplegable Veneral
)eg%idamente p%lsamos bot$n derecho sobre n%estro proyecto y elegimos la opci$n
Conig%redd (ype)cript )%pport
hora crea %n n%evo archivo dentro del proyecto con la etensi$n .ts 5app.ts4 por ejemplo6 yestamos listos para empe,ar. #or deecto se compilará n%estro c$digo () al g%ardar c%al%ier cambiode c%al%ier archivo %e pertene,ca al proyecto.
Creamos %n archivo con etensi$n .html y le aFadimos la eti%eta script donde el src sea elarchivo .js4 en este caso app.js. El c$digo %e se deba ejec%tar en %na ?eb debe hacerse desp%"s de lacarga de la propia página p%es no será hasta entonces c%ando est" todo disponible. #ara elloescribimos en app.ts
i89o.o86o59 M C%% ,>(
#ara probar lo %e hacemos abrimos el archivo .html creado anteriormente con %n navegador ?eb.
&
http://typecsdev.com/download.htmlhttp://typecsdev.com/download.html
-
8/19/2019 Cosas de TS
24/154
Ges%midamente4 a estas alt%ras4 en n%estro proyecto tendremos:
inde+.,t"l
app.ts
app.js
El archivo .html incl%ye en s% SheadT el archivo app.js. Cada ve, %e modii%emos el app.tsse compilará en app.js.
3.3 -ividir el proecto
Es evidente %e si creamos n%estras clases4 interaces4 etc4 no lo vamos a hacer en el mismo.ts4 sino %e4 como es lo normal en la programaci$n orientada a objetos4 cada clase est" en %n archivoAnico. #or ello4 ante esta hipot"tica estr%ct%ra:
app.tsclase.ts
)i en app.ts %samos clase.ts4 lo reerenciaremos de la orma adec%ada en app.ts. la hora decompilar () todo se concentrará en %n Anico archivo .js. Esto hara %e por cada página donde%eramos aFadir c$digo tendramos compilar el c$digo especico para esa página j%nto con todas las%tilidades %e hayamos creado. 9o es recomendable por%e rompe totalmente con la ilosoa de la
re%tili,aci$n. Lo mejor es hacer %n proyecto () donde tengamos todas n%estras creaciones y sea elres%ltado de ello lo %e %semos en cada página.
modo de ejemplo:
pagina1.,t"l pagina2.,t"l
Bmagina %e tenemos dos páginas con esos nombres donde %eremos aFadir c$digo J).
Creamos %n archivo .ts por cada %na 5y s% .js6:
pagina1.,t"l pagina2.,t"l
pagina1.ts pagina!.ts
pagina1.js pagina!.js
)i en cada .ts hemos %sado n%estras propias clases4 interaces4 etc4 lo aFadimos a modo de
librera:
&!
-
8/19/2019 Cosas de TS
25/154
pagina1.,t"l pagina2.,t"l
libreria.js libreria.js
libreria.d.ts libreria.d.ts
pagina1.ts pagina!.ts
pagina1.js pagina!.js
=e esta orma %saremos n%estra propia librera como eterna4 mediante el archivo dedeiniciones. s conseg%imos re%tili,arla en todas las páginas %e %eramos y separaremos elc$digo especico de cada %na.
3.% ibrer/as e+ternasC%ando estemos trabajando con libreras eternas el procecimiendo es algo distinto. Ma %e lo
normal es orecer todo n%estro c$digo en %n Anico archivo .js %e es el %e realmente se va a %sar inalmente en la ?eb4 nosotros podemos orecer las n%estras como %n proyecto de () y %e sea el
programador %e la %se el responsable de s% compilaci$n y %tili,aci$n. La otra orma es proveer elarchivo .js j%nto con %n archivo de deiniciones. El archivo .js se aFade al .html normalmente y es enn%estro proyecto de () donde %saremos el d.ts. )i está bien constr%ido todo lo %e ah se epongatendrá s% e%ivalencia en la librera en J) por lo %e no habrá problemas al ejec%tarlo.
&&
-
8/19/2019 Cosas de TS
26/154
-
8/19/2019 Cosas de TS
27/154
%.-epuración
%.1 Introducción• Nota: Las imágenes expestas en este cap!tlo han sido o"tenidas del navegador #hrome de
$oogle. %tros navegadores tienen n comportamiento similar.
En el desarrollo de n%estra aplicaci$n se nos hace indispensable el poder ver de %na ormaclara %" está haciendo n%estro c$digo mientras se ejec%ta. #ara ello podemos %sar las herramientasde dep%raci$n de c$digo o de"gging. Con ellas observamos el comportamiento de cada sentencia
p%diendo parar s% ejec%ci$n en %n p%nto y ejec%tarla lnea a lnea con el in de poder recabar lainormaci$n necesaria.
%.2 a consolaIna herramienta m%y importante es la consola. En ella podemos ver los errores de n%estra
aplicaci$n as como la lnea de c$digo donde ha allado. #%lsa 71! para abrirla.
% podemos ver %e se ha lan,ado %na ecepci$n %e no se ha controlado
Bntentamos ejec%tar %n m"todo de %n objeto con valor n%lo.
(ambi"n podemos escribir desde n%estro c$digo. #ara %tili,arla tenemos a n%estra disposici$nel objeto console con %na serie de m"todos. Los más importantes son:
co87o6e.6o@Mpro589o co87o6e.6o@
&+
-
8/19/2019 Cosas de TS
28/154
co87o6e.i84oMpro589o co87o6e.i84o
co87o6e.errorMpro589o co87o6e.error
%.3 -epurando TSGealmente no podramos dep%rar directamente () p%es lo %e se ejec%ta es s% trad%cci$n enJ). #ero el compilador de () genera %nos archivos .maps %e relacionan el c$digo () con el nativoen J). =e esta orma4 podemos tra,ar %na correspondencia lnea a lnea lo %e hace %e pare,ca %eestamos dep%rando () de orma directa.
#ara activar esta caractersticas en #hrome debemos abrir el navegador y p%lsar 71!. En la parte s%perior derecha de la pestaFa %e se ha abierto aparece %n icono de %na sierra dentada comoen la imagen
#%lsamos y nos abrirá otra pestaFa en la %e debemos marcar la opci$n &na"le 'avacript sorce maps
Ina ve, hecho podemos ver el c$digo () en la pestaFa orces y eligiendo el archivo .ts %e%eramos.
;
-
8/19/2019 Cosas de TS
29/154
%.%$untos de ruptura
Llamados "reak points en ingl"s. )% %tilidad es tan simple como importante. Con ellosestablecemos %na lnea en el c$digo donde la ejec%ci$n del programara se parará c%ando lleg%e a ese
p%nto. Ina ve, ah tenemos las opciones de seg%ir con la ejec%ci$n o eval%ar epresiones.
Estos se establecen sobre el c$digo en la misma pestaFa orces p%lsado sobre la lnea %e%eramos. )e verá %na eti%eta a,%l sobre el nAmero de lnea.
)i act%ali,amos la página p%lsando 7;
;!
-
8/19/2019 Cosas de TS
30/154
'emos %e la lnea !;4 %e es donde establecimos el p%nto de r%pt%ra4 se ha coloreado dea,%l. En la imagen la ejec%ci$n del programa está parada.
En ese momento tenemos a n%estra disposici$n en la parte derecha de esa misma pestaFa4%nos botones Atiles.
(ódigo &so
1 ContinAa con la ejec%ci$n hasta el inal o hasta %e enc%entre otro p%nto de r%pt%ra.
2 Ejec%ta la lnea sobre la %e está posicionado y pasa a la sig%iente.
3 Ejec%ta el c$digo hasta la sig%iente %nci$n %e enc%entre.
% Ejec%ta el c$digo hasta salir de la %nci$n act%al.
' =esactiva todos los p%ntos de r%pt%ra. 9o los elimina4 simplemente los ignora.
0 #ara la ejec%ci$n c%ando se lan,a %na ecepci$n.
%.' *valuador de e+presionesIna ve, hayamos parado la ejec%ci$n de n%estro programa4 podemos eval%ar epresiones en
el watcher seleccionando la variable con el c%rsor y p%lsando bot$n derecho.
;&
-
8/19/2019 Cosas de TS
31/154
Esto aFadirá el elemento seleccionado a %n panel de la parte derecha llamado atch &xpresions
)i el valor %era nll lo indicara. En este caso se trata de %na variable %e contiene %n nododiv de id content . #odemos desplegarla para ver con más detalles de %" se compone.
Ges%lta increblemente Atil en sit%aciones en las %e no sabemos %" valor está asignándose a%na variable en la %e observamos %n comportamiento etraFo.
Es posible4 tambi"n4 conocer el valor de %na epresi$n comparativa4 aritm"tica4 etc.Gealmente4 es posible observar c%al%ier sentencia.
;*
-
8/19/2019 Cosas de TS
32/154
;+
-
8/19/2019 Cosas de TS
33/154
'.ariables
'.1 IntroducciónLas variables en () sirven para lo mismo %e en todos los leng%ajes de programaci$n: para
almacenar inormaci$n. M como s% nombre indica p%eden variar s% contenido d%rante toda laejec%ci$n del programa.
#ara crearlas se %tili,a la palabra clave var seg%ido de %n nombre identiicativo. esto se le
llama declarar %na variable.
-
8/19/2019 Cosas de TS
34/154
'.3 Iniciali)aciónBniciali,ar %na variable es asignarle %n valor. En () las variables no se iniciali,an de orma
a%tomática como en otros leng%ajes de programaci$n donde4 por ejemplo4 las de tipo n%m"rica seiniciali,an con el valor si no le establecemos %n valor eplcitamente.
-
8/19/2019 Cosas de TS
35/154
*&
-
8/19/2019 Cosas de TS
36/154
0.Tipos
0.1 ariables con tipoIn tipo identiica lo %e almacena %na variable. 9o es lo mismo %n nAmero %e %na letra.
Las variables en () son estáticamente tipadas. Esto %iere decir %e a la hora declararla podemos establecer %" tipo de datos contiene. La sintais para tipar %na variable es la sig%iente:
-
8/19/2019 Cosas de TS
37/154
)i declaramos %na variable con %n tipo primitivo4 no la podemos iniciali,ar con el tipoenvolt%ra a%n%e s se p%ede hacer lo inverso.
*.!.1 Bniciali,aci$n literal
Consiste es asignarle el valor directamente a %na variable sin %sar ningAn constr%ctor . (antolos primitivos como los envolt%ra p%eden ser iniciali,ados de orma literal.
E7to e7 85 c59e85
-
8/19/2019 Cosas de TS
38/154
DC%ándo %sar %no % otro 'ayamos por partes:
Con respecto a nm"er/Nm"er, con el primero se p%eden %sar los operadores aritm"ticos ycon el seg%ndo no. Es algo ecl%sivo de () ya %e en J) es perectamente válido por lo %e estamosante otra comprobaci$n en tiempo de compilaci$n. Esto s%pone %n gran inconveniente.
-
8/19/2019 Cosas de TS
39/154
)$lo sirve para determinar %e %na %nci$n no dev%elve ningAn valor. (ambi"n se podrantipar variables con void pero carece de sentido.
*.3.! 9%ll
9o se p%ede tipar %na variable con Nll. )$lo p%ede ser el valor de la variable. C%al%ier tipode variable p%ede contener el valor nll . Gepresenta valor n%lo.
-
8/19/2019 Cosas de TS
40/154
-
8/19/2019 Cosas de TS
41/154
0.' In5erencia de tiposBnerir4 segAn la GE se deine como: )acar %na consec%encia o ded%cir algo de otra cosaK.
En este sentido se reiere a la capacidad de ded%cci$n del compilador a la hora de asignar tipos de orma a%tomática a variables no tipadas eplcitamente4 segAn ciertas circ%nstancias.
*.;.1 Bnerencia básica
Es la %e oc%rre c%ando se nos olvidaK tipar %na variable %e hemos iniciali,ado.
-
8/19/2019 Cosas de TS
42/154
0.0 *l "e6or tipo co"#n0ay sit%aciones en las no hemos tipado %n array y lo hemos rellenado de valores de distinto
tipo:
-
8/19/2019 Cosas de TS
43/154
)i rellenamos el array con instancias de clases o interaces el mejor tipo comAn será a%"l%e sea compatible con todos los demás. En el caso de %e no eista4 el res%ltado será . %n%elas clases instanciadas sean s%bclases de otra comAn4 el algoritmo debe elegir entre los tiposeplcitamente introd%cidos.
,&& A ,&& B
-
8/19/2019 Cosas de TS
44/154
Con este operador tambi"n podemos tipar %na variable con el tipo de otra. Es lo %e seconoce en () como tipos cons%lta.
-
8/19/2019 Cosas de TS
45/154
+&
-
8/19/2019 Cosas de TS
46/154
7.4peradores
7.1 4peradores unariosLos operadores %narios son a%"llos %e s$lo necesitan %n operando para poder ser %sados.
>.1.1 Operadores y --
)$lo para Any, nm"er y enm.
)on los llamados incremento 56 y decremento 5--6. )irven para s%mar o restar %na %nidad a%n nAmero. s% ve,4 dependiendo de d$nde lo escribamos4 p%eden ser preincremento/predecrementoo postincremento/postdecremento.
-
8/19/2019 Cosas de TS
47/154
.1.! Operadores 4 \
)$lo sirven para nm"er, Any y enm.
Convierten %n valor del tipo Any a nm"er .
K1 +*-?)/ 1
El operador - tambi"n p%ede %sarse con nm"er para negativi,ar.
.1.3 Operador ]
Es el complemento a %no. Cambia todos los bits a 1 y todos los bits 1 a . En la prática
convierte %n nAmero en s% inverso y le resta 1.
-
8/19/2019 Cosas de TS
48/154
.1.; Operador delete
8orra propiedades de objetos o elementos de %n array.
)i se borra la posici$n de %n array4 "ste no se redimensiona4 sino %e convierte esa posici$nen nde+ined .
=ev%elve tre o +alse dependiento de si ha podido eliminar o no el elemento.
-
8/19/2019 Cosas de TS
49/154
)on operadores llamados pere,osos por%e no sig%en eval%ando en c%anto el res%ltado de %naepresi$n o conj%nto de ellas es s%iciente para determinar toda la condici$n.
7.2.2.1 5alse en TS
4 5cadena vaca64 nll y nde+ined
7.2.2.2 4perador A-
)e representa: ``
)erá tre si4 y s$lo si4 todas las epresiones son tre.
e+presión1 e+presión2 e+presión1 99 e+presión2
tr%e tr%e tr%e
tr%e alse alse
alse alse alse
alse alse alse
)i alg%no de los dos se evalAa como +alse4 el res%ltado será +alse. Ina epresi$n p%ede ser
%na variable o %na epresi$n compleja. )e p%eden hacer todo lo etensas %e se desee
[ `` [ `` ... `` [ ``
Bncl%so se p%ede establecer prioridades con par"ntesis:
epresion1 ̀ ` 5epresi$n! ̀ ` epresion36
epresion! y epresion3 actAan como %na a la hora de eval%arse de orma conj%nta conepresion1
(ambi"n p%ede %sarse para %na asignaci$n condicional. )i el primer operando se evalAa como
tre4 se asignará el valor del seg%ndo operando. )i se evalAa como +alse4 se asignará el valor del primero. La variable siempre %edará tipada con el tipo de dato del seg%ndo operando.
-
8/19/2019 Cosas de TS
50/154
y nll es +alse64 se asignará a nombre el valor del primer operando sin eval%ar el seg%ndo. )i personano %era nll eval%ara persona.nom"re y se lo asignara a nom"re.
7.2.2.3 4perador 4:
)e representa
)erá tre si alg%no de los operandos es tre.
e+presión1 e+presión2 e+presión1 ;; e+presión2
tr%e tr%e t%e
tr%e alse tr%e
alse alse tr%e
alse alse alse
l ig%al %e con 9=4 se p%eden hacer todo lo largas %e se %iera.
(ambi"n p%ede %sarse para %na asignaci$n condicional.
-
8/19/2019 Cosas de TS
51/154
7.2.3.1 4peradores < =
)on los %sados para s%mar y restar nAmeros respectivamente.
-
8/19/2019 Cosas de TS
52/154
operador uso
9 Geali,a la operaci$n 9= bit a bit.
; Geali,a la operaci$n OG bit a bit.
Geali,a la operaci$n OG bit a bit
-
8/19/2019 Cosas de TS
53/154
)e p%ede %sar tambi"n con string . (odos los caracteres tienen %n c$digo n%m"rico %e losidentiica. La comparaci$n se hara en base a "l.
5 C A %% '/*) C A %% '/*)
Como p%edes ver4 bK es mayor a K por%e el c$digo )CBB de la letra b minAsc%la esmayor %e el c$digo )CBB de la letra mayAsc%la. Las letras mayAsc%las tienen %n c$digo menor alas minAsc%las.
2ás inormaci$n sobre )CBB:http://es.?i A
-
8/19/2019 Cosas de TS
54/154
J y %% &)5 %% &)
Esta ve, no s$lo compr%eba el valor4 sino tambi"n el tipo sin hacer conversion. Comonm"er y Nm"er no son el mismo tipo ni tampoco string y tring 4 el res%ltado de las
comprobaciones del ejemplo son +alse.
DC$mo se eval%ara %na comprobaci$n de ig%aldad entre dos tring 5envolt%ra6 c%yascadenas %eran ig%ales
-
8/19/2019 Cosas de TS
55/154
)i al menos %no de ellos es string el res%ltado será string por%e los concatena4 es decir4 los %ne. Eneste caso estara act%ando como operador de concatenaci$n.
-
8/19/2019 Cosas de TS
56/154
-
8/19/2019 Cosas de TS
57/154
1+
-
8/19/2019 Cosas de TS
58/154
8.(ontrol del 5lu6o
8.1 IntroducciónLa idea básica de la programaci$n es la a%tomati,aci$n de procesos en los %e %n h%mano
debera hacerlos de orma man%al cada ve, %e %isiera obtener res%ltados. #or ello esimprescindible poder controlar la ejec%ci$n del programa tomando decisiones sobre %" debera o noejec%tar dependiendo de la sit%aci$n. #or otra parte4 no basta con bi%rcar los caminos4 sino %e
debemos tener algAn mecanismo para repetir sentencias de orma %e no nos oblig%e a escribir %nnAmero de veces sit%aciones análogas.
8.2 Selectivas+.!.1 i
)irve para tomar decisiones bajo alg%na condici$n. % es donde res%ltan imprescindibleslos operadores l$gicos.
%,(+,+% %% C>(
* 5 %)&)
% S +( )& >* 5 )+'/ * %
demás se p%ede %sar el blo%e else i+ para determinar más casos.
MJ * %% S) );),*' & : )& >* 5%% C>(
)&) MJ & %% S )& >* 6
)&)
11
-
8/19/2019 Cosas de TS
59/154
%% S +( )& >* + 5 + 6
En la condici$n p%edes %sar todos los operadores de comparaci$n %e %ieras j%nto conoperadores l$gicos.
( & : ( & : ( )+ ) ,&( ) *) +( &) ++>*+( ) (&
+')/(/)& %?/)
11!
-
8/19/2019 Cosas de TS
60/154
8.3 IterativasIn b%cle es %na repetici$n limitada o no 5los b%cles ininitos no son b%ena idea6 de %n blo%e
de c$digo. )i4 por ejemplo4 %eremos mostrar por pantalla los 1 primeros nAmeros y no %sáramos b%cles4 tendramos %e escribirlos todos a mano. bs%rdo4 Dno crees
+.3.1 ?hile
El b%cle while se ejec%ta mientras la condici$n sea tre.
C Z"o7 #5r6o7 L5H5[
(/ M
-
8/19/2019 Cosas de TS
61/154
#odemos declarar más de %na variable y hacer %e la condici$n sea más compleja conoperadores l$gicos. demás en la act%ali,aci$n podemos %sar c%al%ier operador matemático. LaAnica restricci$n es %e el ndice ha de ser n%m"rico entero.
+.3.& or-in
Es similar al +or pero no se declara %n ndice n%m"rico y recorre la estr%ct%ra de principio ain4 sin condiciones.
-
8/19/2019 Cosas de TS
62/154
( N( &) );),*'.
)i enc%entra el valor Jos"K en el array nom"res itera el sig%iente sin ejec%tar el c$digo %e%edaba.
11+
-
8/19/2019 Cosas de TS
63/154
1!
-
8/19/2019 Cosas de TS
64/154
G.Hunciones
G.1 IntroducciónLas %nciones no son más %e sentencias agr%padas para sol%cionar %n problema en
partic%lar. =e esta orma la invocamos c%ando sea necesario evitando la repetici$n de c$digo.
() hereda la orma en la %e trabajan las %nciones en J) pero aFadi"ndole etrass%stanciales.
G.2 -eclaraciónIna %nci$n se divide en dos partes: cabecera y c%erpo. La cabecera deine a la %nci$n
mediante %n nombre4 %na lista de parámetros 5opcional6 separados por coma y %na salida 5p%ede ser la salida vaca6.
#ara declarar %na %nci$n %tili,a la palabra reservada +nction seg%ida de la cabecera y delc%erpo4 el c%al está encerrado entre llaves.
*+,'(+ 8oHreDeL538cio8M:
-
8/19/2019 Cosas de TS
65/154
lista5arametros representa %na lista de parámetros separados por coma. Los parámetros sonvalores %e la %nci$n acepta como entrada. Esto res%lta m%y Atil para constr%ir %nciones másre%tili,ables %e nos ahorren tiempo y trabajo. Los parámetros se declaran eactamente ig%al %e lasvariables pero sin la palabra reservar var .
*+,'(+ 48cio8 MJ: +*-?)/ W: +*-?)/:
-
8/19/2019 Cosas de TS
66/154
-
8/19/2019 Cosas de TS
67/154
0emos creado %na variable de tipo nm"er con %n valor iniciali,ado de ;. 0emos invocado la%nci$n pasando esta variable como arg%mento. En ese momento se ha creado %na copia de lavariable x de %era de la %nci$n hacia la variable y de dentro de la %nci$n. )i modiicamos lavariable y 5en este caso hemos s%mado %no6 vemos como la x se mantiene intacta.
G.3.3.2 $or re5erencia
En contraposici$n al paso por valor eiste el paso por reerencia. En "ste no se hace %na copiadel valor de la variable hacia el parámetro de la %nci$n4 sino %e lo %e se le pasa es la reerencia dela direcci$n de memoria.
C%ando se crea %na variable se reserva %n espacio de memoria donde almacenarla. Eseespacio de memoria tiene %na direcci$n %e maneja internamente la má%ina virt%al. l hacer %n
paso por reerencia lo %e se le proporciona es esta direcci$n de memoria a otra variable. =osvariables4 a priori distintas4 %e posean la misma direcci$n están ap%ntando al mismo l%gar de la
memoria por lo %e en realidad son la misma variable.
-
8/19/2019 Cosas de TS
68/154
yZ0[ == 1
copi5Re4MJJZ0[ == 0
Es ig%al %e el ejemplo del paso por reerencia pero con la dierencia de %e no cambiamos la posici$n del array y4 sino %e lo volvemos a iniciali,ar pero con el valor 1 en cada posici$n. lacabar la ejec%ci$n de la %nci$n y mostrar la posici$n de 4 segAn lo %e hemos aprendido deberaser 1. #%es no4 es . D#or %" #or%e4 como se ha eplicado anteriormente4 no se le ha pasado ladirecci$n de memoria original4 sino %na copia.
G.% alores de retorno
Las %nciones p%eden devolver %n valor si as lo precisamos. #ara ello se debe especiicar enla cabecera de la %nci$n el tipo de dato %e %eremos devolver: nm"er 4 string 4 Array[ )i la%nci$n no va a devolver nada4 hay %e especiicarlo con la palabra reservada void .
*+,'(+ 9ee6e MJ: +*-?)/ y: +*-?)/: +*-?)/ /)'*/+ ) %% D)
-
8/19/2019 Cosas de TS
69/154
-
8/19/2019 Cosas de TS
70/154
G.7 Hunciones anóni"asLas %nciones an$nimas son a%"llas %e no tienen ningAn nombre especiicado.
M:
-
8/19/2019 Cosas de TS
71/154
.>.! (ipado literal de %na %nci$n
0emos visto %e %na %nci$n p%ede almacenarse en %n objeto4 ya sea mediante epresionesestándar o lechas.
La c%esti$n %e se nos plantea es %e si en () todo está tipado4 Dc$mo se tipan las %nciones#odemos pensar %e con el tipo ;nction ya sera s%iciente. En %n principio podra ser as ya %e%nciona perectamente pero s% gran inconveniente es %e con "l no se p%ede tipar de %na orma másrestrictiva4 esto es deiniendo %na cabecera de %nci$n eacta.
En n%estro ejemplo:
Lo %e a% nos permite la primera orma es poder sobrecargar la %nci$n con másdeiniciones. La seg%nda orma s$lo permite %na.
: +*-?)/ 7orec5r@595
13*
-
8/19/2019 Cosas de TS
72/154
*+,'(+ 7orec5r@595 MJ: &'/+>: +*-?)/*+,'(+ 7orec5r@595 MJ:+*-?)/:&'/+>*+,'(+ 7orec5r@595 MJ:+:+
/)'*/+ 7orec5r@595
0emos sobrecargado la +nction %ncion con otra deinici$n. 0ay %e tener en c%enta %e enel tipo no hay %e deinir %na %nci$n %e englobe a las demás.
.>.& =einici$n de %nci$n por parámetro
hora imagina %e tenemos %na %nci$n c%al%iera %e tiene como parámetro otra %nci$n pero con %na determinada deinici$n. DC$mo lo haramos
*+,'(+ eXeHp6oM48c: MJ: &'/+> C +*-?)/:
-
8/19/2019 Cosas de TS
73/154
-
8/19/2019 Cosas de TS
74/154
*+,'(+ e7peci56iW595M85He: e7pe: &'/+>*+,'(+ e7peci56iW595M85He: &'/+>: +*+,'(+ e7peci56iW595M85He: &'/+>: +*-?)/
/)'*/+ 0
(ras los dos p%ntos no se ha especiicado el tipo del parámetro4 sino directamente el valor como cadena de caracteres.
=e esta orma si invocamos la %nci$n e introd%cimos como arg%mento el valor especiicadoespeK4 se %sara ecl%sivamente esa deinici$n de %nci$n.
0ay %e tener en c%enta %e si %samos este tipo de deiniciones especiali,adas4 siempre tiene%e haber %na %e no lo sea y %e englobe a las demás.
Esto no es válido*+,'(+ e7peci56iW595M85He: e7pe: &'/+>*+,'(+ e7peci56iW595M85He: +*-?)/: +*+,'(+ e7peci56iW595M85He: &'/+>: +*-?)/
/)'*/+ 0
M no lo es por%e la seg%nda deinici$n tiene como parámetro %n nm"er el c%al no escompatible con string. s% ve, es necesaria %na tercera deinici$n %e es la %e contendrá el c%erpode la %nci$n con la implementaci$n de la misma.
G.1 (o"parando 5uncionesLas %nciones se comparan de la misma orma %e se sobrecargan. )implemente deben
coincidir en nAmero de parámetros4 tipo de los mismos y devolver el mismo tipo de dato. Los tiposno han de ser eactos4 basta con %e sean compatibles.
-
8/19/2019 Cosas de TS
75/154
Isamos el m"todo
n%meros.ilter56 %e eige como arg%mento %na %nci$n con 3 parámetros: los dos primerosson nAmeros y el Altimo del tipo Array.
DEs obligatorio pasarle %na %nci$n con esa deinici$n Gealmente no. Como arg%mentoacepta %na %nci$n con %n máimo de 3 parámetros4 por lo %e si s$lo nos interesa constr%ir %na%nci$n con %n s$lo parámetro podemos hacerlo.
8Hero7.6terMMiteH C co87o6e.6o@MiteH
1&&
-
8/19/2019 Cosas de TS
76/154
1. *nu"erados
1.1 IntroducciónLos en%merados 5o enms6 son %n tipo derivado de nm"er %e relacionan %n nombre literal
con %n nAmero determinado. Es %na orma más amigable %e el %so de nAmeros en determinadoscasos.
)i %eremos manejar %na lista de animales podramos asociar cada %no con %n nAmero y %sar
el mismo para reerenciarlos. O bien podramos g%ardar el nombre del animal como string . #ero esono nos permite %e la lista sea inamovible ni limitada y4 además4 es poco manejable. )i declaramos%n enm con los nombres y los mismos se asocian de orma a%tomática a %n nAmero4 estamosconsig%iendo lo %e %eremos.
)+*- A8iH56 $erro G5to #o8eXo
La mecánica es la misma %e la de los estáticos. #ara acceder a los valores del enm seescribe el nombre del enm seg%ido de %n .K 5p%nto6 y desp%"s el nombre de %no de los contenidos.
-
8/19/2019 Cosas de TS
77/154
)+*- A8iH56 $erro G5to #o8eXo
#odemos obtener el nombre del animal como string si conocemos s% nAmero.
-
8/19/2019 Cosas de TS
78/154
11. (lases
11.1 Kué es una clase• Nota.&n este tema ha"lamos de mtodos para re+erirnos a las +nciones de na clase.
Ina clase representa algo de la realidad tangible o no4 como p%ede ser %na persona4 %na%tom$vil4 %na vivienda o %na idea. Gealmente es %na abstracci$n de esa realidad.
#ara entender bien el concepto de clase debes pensar en %e es como %na ábrica de cosas.Esta ábrica constr%ye los objetos para los %e está diseFada como %na lnea de prod%cci$n decoches.
Ina clase es similar. )e diseFa para ser %n molde del %e desp%"s saldrán objetos a partir de"l. (odos los objetos comparten entre s el mismo diseFo p%es todos se han constr%ido a partir delmismo molde.
En la programaci$n orientada a objetos el molde sera %na clase y los objetos creados a partir de "l las instancias de esa clase.
La orma de decir %e %na variable es del tipo de %na clase es de la misma orma %e tipamos%na variable. las clases tambi"n se les s%elen llamar p%es realmente se comportan como %n tipo dedatos.
11.2 (reación de clases)e %sa la palabra reservada class.
,&& $er7o85
La convenci$n de nombre para las clases es la primera letra de cada palabra es enmayAsc%las. Es lo %e se conoce como lower#amel#ase
2ás inormaci$n: http://es.?i
-
8/19/2019 Cosas de TS
79/154
El sig%iente paso es4 como hemos hablado en anteriores apartados4 iniciali,ar la variable.hora mismo el valor de esa variable es nde+ined . #ara iniciali,arla se %sa el operador new seg%idodel nombre de la clase y de par"ntesis. Este operador reserva %n espacio de memoria para representar al objeto.
5pe66i9o!: &'/+>
El constr%ctor de la clase 5ersona ahora tiene como parámetros obligatorios el nombre y el primer apellido. El seg%ndo apellido es opcional.
-
8/19/2019 Cosas de TS
80/154
11.&.1 El estado
Los atrib%tos de %na clase son variables %e se declaran dentro de la propia clase.
)eg%imos constr%yendo la clase 5ersona. (enemos %e pensar %" caractersticas tiene %na persona c%al%iera4 %" es lo %e nos deine. En este caso hemos optado por s% nombre y apellidos.(ambi"n podra ser el =9B4 alt%ra4 peso4 todo lo %e %eramos o necesitemos.
,&& $er7o85 8oHre: &'/+>5pe66i9o1: &'/+>5pe66i9o!: &'/+>,(+&'/*,'(/M8oHre: &'/+> 5pe66i9o1: &'/+> 5pe66i9o!: &'/+>
0emos declarado s%s atrib%tos pero no están iniciali,ados. Lo hacemos en el constr%ctor.
,&& $er7o85 8oHre: &'/+>5pe66i9o1: &'/+>5pe66i9o!: &'/+>,(+&'/*,'(/M8oHre: &'/+> 5pe66i9o1: &'/+> 5pe66i9o!: &'/+>
'=&.8oHre 8oHre'=&.5pe66i9o1 5pe66i9o1'=&.5pe66i9o! 5pe66i9o!
Como podemos ver lo %e se introd%ce como arg%mento al constr%ctor es lo %e en s%implementaci$n se le asigna a los atrib%tos. 9ormalmente c%ando instanciemos %na clase debemosiniciali,ar s% atrib%tos p%es es lo %e va a deinir a ese objeto en partic%lar y lo va a dierenciar delresto de objetos de la misma clase.
0ay %e p%nt%ali,ar %e las clases no aceptan atrib%tos opcionales.
,&& $er7o85 8oHre:&'/+>5pe66i9o1: &'/+>5pe66i9o!: &'/+>
% %
11.%.1.1 4tra 5or"a de declarar atributos
Los parámetros de entrada de %n constr%ctor p%eden ser miembros de la clase 5atrib%tos6 deorma a%tomática sin declararlos de orma eplcita.
,&& $er7o85 ,(+&'/*,'(/M/ / /
1;&
-
8/19/2019 Cosas de TS
81/154
*?, Ho7tr5rNoHreM: 5pe66i9o1: &'/+>5pe66i9o!: &'/+>,(+&'/*,'(/M8oHre: &'/+> 5pe66i9o1: &'/+> 5pe66i9o!: &'/+>
'=&.8oHre 8oHre'=&.5pe66i9o1 5pe66i9o1'=&.5pe66i9o! 5pe66i9o!
Ho7tr5rNoHreM:
-
8/19/2019 Cosas de TS
82/154
-
8/19/2019 Cosas de TS
83/154
En el caso de %e lo %semos dentro de %na %nci$n.
*+,'(+ eXeHp6oTi7M '=& %% +(eXeHp6oTi7M
=e n%evo this es window por%e ejemplo-his() no pertenece a ningAn objeto de ormaeplcita4 por lo %e es parte de window.
El operador new cambia este comportamiento y hace %e el conteto sea la instancia.
*+,'(+ eXeHp6oTi7M '=& %% (?;),'. L +&'+,.
-
8/19/2019 Cosas de TS
84/154
1*!
-
8/19/2019 Cosas de TS
85/154
11.' *ncapsula"iento(odo miembro de %na clase es pAblico por deecto. Esto signiica %e es accesible desde
%era de la clase. #ara hacer %e %n miembro no lo sea4 hay %e declararlo como privado. Las
palabras reservadas son p"lic y private. 9ormalmente los atrib%tos deben ser siempre privados y la orma de acceder a ellos es
mediante m"todos pAblicos llamados getters y setters.
,&& $er7o85
///
%%
s4 si creamos %na instancia de la clase 5ersona llamada carlos y hacemos esto:
c5r6o7.8oHre #5r6o7
9os dara %n error p%es no es accesible desde %era.
Lo mismo oc%rre con los m"todos.
,&& $er7o85 %%.../
-
8/19/2019 Cosas de TS
86/154
-
8/19/2019 Cosas de TS
87/154
11.;.1 Vetters y setter implcitos
Es %na orma m%y interesante de constr%ir getters y setters p%es sintácticamente soninvisibles a la hora de acceder a los atrib%tos.
En el apartado anterior hacamos esto:
*?, @etNoHreM:&'/+>/)'*/+ '=&.8oHre
*?, 7etNoHreM8oHre:&'/+>:)' 8oHreM: &'/+>/)'*/+ '=&.d8oHre
*?, &)' 8oHreM 8oHre: &'/+> '=&.d8oHre 8oHre
Nota: No se especi+ica el tipo void como devolcin de los setters impl!citos, da error de
compilacin.
#ara %sarlos basta con acceder al atrib%to como si "ste %era pAblico.
-
8/19/2019 Cosas de TS
88/154
s combinamos la simple,a sintáctica del acceso a atrib%tos pAblicos j%nto con la practicidad de hacerlo mediante m"todos.
11.0 LerenciaD%" es la herencia #odemos imaginar %e en el m%ndo eisten dierentes tipos de cosas %e
tienen estados y comportamientos com%nes como podran ser los mameros4 los a%tom$viles o lostel"onos. La herencia nos provee %n mecanismo para relacionar las distintas clases.
9%estra clase ejemplo 5ersona se reiere a algo m%y general. #odramos especiicar más. )iestamos reali,ando la gesti$n de %n a%la4 nos damos c%enta de %e en ella hay al%mnos y proesoresy ambos son personas. =e esta orma estamos agr%pando dos tipos de cosas bajo %n mismocomportamiento y estado.
Con todo ello podramos crear %na clase llamada Almno y otra llamada 5ro+esor %eheredaran de 5ersona por lo %e las clases hijas 5as se les llamas a las clases %e heredan de otra6obtendran todo lo %e es y hace el padre 5as se les llama a las clases de las %e se hereda6.
#ara hacerlo hay %e %sar la palabra reservada extends.
,&& $er7o85,&& A6H8o ):')+& $er7o85 ,&& $ro4e7or ):')+& $er7o85
• Nota: no existe la herencia m8ltiple en -. &sto es 9e na clase slo pede heredar
de na sola clase a la ve4. No con+ndir con constrir na jerar9!a pes na clase pede heredar de varias si entre todas se relacionan de +orma vertical.
LI29O #EG)O9 22B7EGO )EG 'B'O
hora tanto Almno como 5ro+esor obtendran todo lo %e es y hace 5ersona. 8%eno4 notodo realmente p%es a% entra en j%ego el princio de oc%ltaci$n. (odo lo declarado como pAblico sehereda. (odo lo declarado como privado no se hereda y no es accesible desde la clase hija. 0ay %ntercer modiicador4 llamado protegidoK 5 protected 6 %e no está soportado en (). )i declaramos %nmiembro como protected 4 las clases hijas lo heredan pero no es accesible desde %era.
11.*.1 El operador s%per
0emos visto el operador this4 %e hace reerencia a la clase propia donde lo %semos.
Eiste otro llamado sper %e hace reerencia a la clase padre desde donde estemosheredando. Con "l podemos reerenciar miembros de la clase padre siempre y c%ando no sean
privados.
Bmaginemos %e %eremos %e4 además de nombre y apellidos4 %n al%mno tenga %n nAmerode al%mno.
1>
-
8/19/2019 Cosas de TS
89/154
,&& A6H8o ):')+& $er7o85
/ 5pe66i9o1: &'/+> 8HeroA6H8o: +*-?)/
5pe66i9o!: &'/+>
&*)/M8oHre 5pe66i9o1 5pe66i9o! '=&.8HeroA6H8o 8HeroA6H8o
D%" ha pasado a%
0emos creado %n constr%ctor para Almno en el %e admite %n parámetro más %e el de 5ersona para incl%irle la reerencia.
0emos llamado al constr%ctor de 5ersona pasándole como arg%mento lo %e espera. Es m%y
importante recalcar %e la primera lnea de c$digo del constr%ctor de %na clase %e hereda de otra es%na llamada sper() con los arg%mentos %e sean. =e lo contrario dará error de compilaci$n. M estotiene s% l$gica. C%ando creamos %n Almno realmente tambi"n estamos creando %na 5ersona por lo%e para hacerlo se debe llamar al constr%ctor de 5ersona.
=esp%"s de la llamada sper() podemos g%ardar la reerencia.
)i 5ersona tiene el constr%ctor sobrecargado4 la llamada sper() p%ede ser a c%al%iera de lasdeiniciones del constr%ctor. )implemente hay %e c%mplir con los parámetros %e eige.
=esde otros m"todos podemos llamar a los m"todos del padre con el mismo sper . En este
caso no se eige %e sea la primera llamada.,&& A6H8o ):')+& $er7o85
/ 5pe66i9o1: &'/+> 8HeroA6H8o: +*-?)/5pe66i9o!: &'/+>
&*)/M8oHre 5pe66i9o1 5pe66i9o!'=&.8HeroA6H8o 8HeroA6H8o
*?, Ho7tr5rRe4ere8ci5M:
-
8/19/2019 Cosas de TS
90/154
0ay %e seFalar %e %n objeto de %na clase hija es tambi"n del tipo de todas s%s clases padre.
En n%estro ejemplo:
LI29O #EG)O9 22B7EGO )EG 'B'O
)i instanciamos Almno obtendramos %n objeto del tipo Almno pero %e a s% ve, tambi"nsera del tipo #ersona4 ?ami+ero y er@ivo. DGec%erdas la llamada sper() en el constr%ctor de
Almno Con eso se llama al constr%ctor de 5ersona por lo %e podemos ded%cir %e estamoscreando tambi"n %na instancia de 5ersona y as s%cesivamente. 9o estamos creando & instanciasdistintas4 s$lo %na pero con las caractersticas de todas las s%perclases.
11.*.! )obreescrit%ra
0eredar los miembros de la clase padre no nos obliga a %tili,arlos tal y como son. #odemosredeclarar los atrib%tos y los m"todos llámandolos de la misma orma en la clase hija. Eso s4 conciertas restricciones.
Los miembros deben tener el mismo modiicador de visibilidad por lo %e si en la s%perclaseestá declarado como p"lic o private4 en la clase hija se debe declarar ig%al.
,&& $er7o85 *?, Ho7tr5rNoHreM:
-
8/19/2019 Cosas de TS
91/154
&*)/.Ho7tr5rNoHreM
M4 posteriormente4 implementar el c$digo %e creamos conveniente.
Es m%y Atil para ampliar %na %ncionalidad %e proviene de la s%perclase. #or motivos de
diseFo podemos necesitar %e la clase hija realice más acciones en el mismo m"todo además de las%e ya se reali,aban en la implementaci$n del m"todo del padre.
11.7 Agregación co"posición#ara empe,ar hay %e concretar %e las dierencias entre agregaci$n y composici$n son
concept%ales y no se relejan en el c$digo.
)i en la herencia establecamos %na relaci$n de es-%n4 en la composici$n la relaci$n es la de
%sa-%n.C%ando empe,amos a ver los miembros de %na clase4 p%dimos observar %e no s$lo podran
declararse variables de tipos primitivos o envolt%ra4 sino %e podamos %sar los propios.
,&& $er7o85 /
-
8/19/2019 Cosas de TS
92/154
11.8 $oli"or5is"oCom s% nombre indica 5m%chas ormas6 es la c%alidad %e tiene %n objeto de %n tipo de
comportarse como de otro tipo en %n momento determinado.
Gecordando el ejemplo:
LI29O #EG)O9 22B7EGO )EG 'B'O
#odemos hacer esto:
-
8/19/2019 Cosas de TS
93/154
Los casting se hacen encerrando el tipo al %e %eremos convertir entre ST seg%ido de lavariable %e %eremos convertir.
En el caso en el %e %eramos %sar %n m"todo del tipo de la variable a la %e %eremosconvertir directamente sin asignarlo a otra variable tenemos %e %sar los par"ntesis.
,&& #5cerM:
-
8/19/2019 Cosas de TS
94/154
11.1 igadura din"icaDEn %" consiste
,&& A
Ho7tr5rLetr5 M 56ertMA
,&& B ):')+& A Ho7tr5rLetr5 M
56ertMB
(enemos dos clases: A y 0. 0 hereda de A. mbas tienen deinido el m"todo mostrarLetra().En A la ejec%ci$n de ese m"todo m%estra %n alert con la letra y en 0 m%estra la letra 8.
)i hacemos esto:
-
8/19/2019 Cosas de TS
95/154
%nci$n nos ejec%tará el del tipo introd%cido y no el de er@ivo. Esto está estrechamente relacionadocon el polimorismo.
11.11 instance45 Es %n operador binario m%y Atil para el manejo de clases. Compr%eba si %n objeto es de %n
tipo determinado. )$lo %nciona con los tipos reerencia4 es decir4 no %nciona con los primitivos.
-
8/19/2019 Cosas de TS
96/154
)on dos instancias distintas de 5ersona en la %e s%s datos no tienen relaci$n entre s. )icambio el nombre de jose4 carlos seg%irá ig%al %e antes.
Eiste %n modiicar llamado static %e es %na palabra reservada del leng%aje. Con "lconseg%imos %e %n miembro sea accesible sin crear instancias de la misma.
,&& $er7o85 % ... %
*?, &'', Ho7tr5rNoHreM:
-
8/19/2019 Cosas de TS
97/154
11.13 (lases literalesLas clases se p%eden representar como %n objeto. (anto los atrib%tos como los m"todos
p%eden ser parte de %n objeto estándar de (). La orma más ácil de representarlo es mediante %nobjeto literal encerrando entre llaves. Entre las restricciones están el no poder hacer los miembros
privados ni estáticos.
,&& $er7o85 8oHre: &'/+>e959:+*-?)/
e959: +*-?)/ +) $er7o85M
-
8/19/2019 Cosas de TS
98/154
-
8/19/2019 Cosas de TS
99/154
#odemos tener como máimo dos indeaciones: %na por string y otra nm"er.
,&& Diccio85rio Zi89eJ: &'/+>[: &'/+>Zi89eJ: +*-?)/[: &'/+>
La Anica restricci$n es %e el tipo dev%elvo por la n%m"rica sea compatible con el de string .
,&& Diccio85rio Zi89eJ: &'/+>[: &'/+>Zi89eJ: +*-?)/[: +*-?)/ %% E//(/
El tipo dev%elto por 2index: nm"er3 es nm"er %e no es compatible con string .
La compatibilidad se gestiona de la misma orma %e ya hemos est%diado lascompatibilidades de primitivos4 objetos4 etc.
=e esta orma podramos crear lo %e en otros leng%ajes4 como #0#4 se llaman arraysasociativos4 donde el ncide no es n%m"rico4 sino %na cadena de caracteres.
1!
-
8/19/2019 Cosas de TS
100/154
12. Inter5aces
12.1 IntroducciónD%" son las interaces )on meros contratosK %e se hacen para %na clase. Gealmente las
interaces son listas de miembros %e obligatoriamente debe tener la clase %e implementa esaintera,.
D#ara %" se %til,an las interaces Ciertamente es %n debate abierto en el m%ndo del diseFo
de aplicaciones. 2i opini$n se deberan %sar para dar %n comportamiento comAn a clases %e no p%eden tener 5o no tiene sentido %e tengan6 relaci$n por herencia.
#odemos tener la clase 5ersona y la clase #oche. Es evidente %e encontrar %na relaci$n por herencia entre esas dos clases no s$lo es complicado4 sino %e carece de sentido. #ero lo %e s escierto es %e p%eden tener algAn comportamiento comAn. (antos las personas como los coches sedespla,an. mbos podran tener %n m"todo llamado despla4ar() %e haga moverse al objeto enc%esti$n.
hora imaginemos %e estamos desarrollando %n j%ego en el %e hay partes m$viles en elescenario como son personas y coches. En %n momento dado necesitamos %e %n gr%po de personasy de coches se m%evan. )i ambas clases implementan la intera, espla4a"le4 basta con recorrer todos los %e %eramos mover y ejec%tar el m"todo despla4ar() sin importar si es %na persona o %ncoche4 p%es la implementaci$n del m"todo estará deinida en cada clase de %na orma partic%lar.
12.2 -eclaración e i"ple"entación#ara crear %na intera, se %sa la palabra reservada inter+ace.
+')/,) De7p65W56e
#ara %e %na clase implemente %na intera, se %tili,a la palabra reservada implements:
,&& $er7o85 -)-)+'& De7p65W56e %%...
La intera, espla4a"le está vaca por lo %e no está obligando a la clase 5ersona a hacer nada. #ero si en espla4a"le deinimos %n m"todo:
+')/,) De7p65W56e
9e7p65W5r M:
-
8/19/2019 Cosas de TS
101/154
Obligamos a la clase 5ersona a implementarlo. )i no lo hace dará error de compilaci$n. #araello hay %e c%mplir eactamente con la deinici$n del m"todo. )i dev%elve %n nm"er no podemosimplementar ese m"todo devolviendo %n string . En este caso no dev%elve nada por lo %e as debeser:
,&& $er7o85 -)-)+'& De7p65W56e %%...*?, 9e7p65W5rM:
-
8/19/2019 Cosas de TS
102/154
-
8/19/2019 Cosas de TS
103/154
-
8/19/2019 Cosas de TS
104/154
!!
-
8/19/2019 Cosas de TS
105/154
13. !enéricos
13.1 IntroducciónLos gen"ricos permiten parametri,ar directamente las clases e interaces. )on %n paso más en
la abstracci$n.
0asta ahora habamos deinido clases no gen"ricas como #oncesionario:
,&& #o8ce7io85rio
Esta clase es capa, de englobar todos los concesionarios de las marcas de los coches. En ellairemos g%ardando %na lista de los coches de cada concesionario.
D#ero para %" marcas de a%tom$viles diseFaremos la clase #odemos hacerlas para todascon el %so de gen"ricos.
,&& #o8ce7io85rioTC
/
-
8/19/2019 Cosas de TS
106/154
Clase original:
,&& #o8ce7io85rioTC/
-
8/19/2019 Cosas de TS
107/154
,&& Aio8 ,&& AtoHoi6
,&& 31, ):')+& Aio8
-
8/19/2019 Cosas de TS
108/154
-
8/19/2019 Cosas de TS
109/154
-
8/19/2019 Cosas de TS
110/154
1%. Tipado estructural
1%.1 Os sobre la co"paración de ob6etosEl tipado en () es estr%ct%ral y no nominal. Esto %iere decir %e los tipos no se dierencian
por s% r%ta c%aliicada la c%al incl%ye el nombre4 sino por s% estr%ct%ra interna. =e esta orma lacomparaci$n se hace miembro a miembro en nombre y tipo.
1%.2 (o"parando clasesEl tipado estr%ct%ral permite comparar clases o intercambiarlas a%n%e no tengan %na
relaci$n de herencia entre ellas.
Los miembros estáticos y el constr%ctor se ignoran a la hora de la comparaci$n.
,&& $er7o85 &'', EV: +*-?)/8oHre: &'/+>
,&& $erro
8oHre: &'/+>
-
8/19/2019 Cosas de TS
111/154
-
8/19/2019 Cosas de TS
112/154
Esto es correcto:
+')/,) A 85He: &'/+>
+')/,) B 85He: &'/+>
-
8/19/2019 Cosas de TS
113/154
En n%estro ejemplo4 la clase 0 debera implementar el m"todo hacerAlgo(). Los estáticos y privados no se tienen en c%enta del mismo modo %e en %na intera, no se p%eden declarar.
1%.' Inter5aces ,erendando de clasesEn () podemos hacer %e %na intera, herede de %na clase. En este caso la intera, hereda los
miembros pero no s% implementaci$n por%e %na intera, no p%ede contener implementaciones.
,&& A *?, 85He: &'/+>
+')/,) I ):')+& A
D%" oc%rrira si la clase contiene miembros Como hemos visto en apartados anteriores4
a%n%e los miembros privados no se heredan4 realmente s están presentes en las clases hijas a%n%eno accesibles. #or ello la intera, lo contendra pero con %na c%riosa consec%encia:
,&& A /
+')/,) I ):')+& A
)$lo las clases %e hereden de A podrán implementar la intera, F y no otras p%es serán lasAnicas %e contengan el miembro privado original.
,&& A/
+')/,) I ):')+& A
,&& B ):')+& A -)-)+'& I %% C(//),'(,&& # -)-)+'& I %% E//(/. C N( )& &*?,&) ) A
2%estra %n error indicando %e # no está implementando todos los miembros de la intera, F 4concretamente el atrib%to nom"re. %n%e declaremos %n atrib%to nombre de tipo string y privadoen la clase C4 no conseg%iramos %e compilara. El Anico %e le sirve es el de la clase y s$lo se
p%ede conseg%ir heredando de ella.
!!
-
8/19/2019 Cosas de TS
114/154
1'. (ontrol de errores
1'.1 Introducción Eiste %na orma de capt%rar los errores %e se prod%,can en n%estra aplicaci$n y darle
resp%esta a los mismos de %na orma controlada. En otros leng%ajes se les llama ecepciones pero en() se llaman errores.
#ara capt%rar %no se %tili,a la estr%ct%ra try6catch4 encerrando en el try el c$digo s%sceptible
a allar.
'/ %% ,>(
,',= Me %% '/'/ ) )//(/
)i algo de lo %e se ejec%ta alla y lan,a %na ecepci$n4 se ejec%tará el c$digo encerrado en el blo%e catch. El parámetro de catch es del tipo &rror pero no se tipa de orma eplcita. )i se hicieraallara al compilar.
1'.2 Tipos de errores0ay alg%nos ya predeinidos %e res%ltan m%y Atiles. Cabe decir %e todos heredan de &rror .
&val&rror
Bndica %n error al ejec%tar la %nci$n global eval56.
>ange&rror
Bndica %e estamos tratando de acceder a %n ndice %e no eiste. Es aplicable a los arrays y alos objecs.
>e+erence&rror
Bndica %e estamos reerenciando a %na variable no declarada.
!!!
-
8/19/2019 Cosas de TS
115/154
yntax&rror
Bndica %e hay %n error de sintais.
-ype&rror
Bndica %e estamos tratando de acceder a miembros de algo %e vale nll o %e no hemos pasado la variable con el tipo correcto como arg%mento.
(odos comparten %na serie de atrib%tos como el message4 %e describe el error de ormaliteral.
9ormalmente4 los navegadores modernos describen estos errores de orma a%tomática en s%consola sin necesidad de %e el desarrollador lo tenga %e hacer de orma eplcita.
1'.3 an)ando erroresEn el blo%e catch se p%ede ejec%tar el c$digo %e se desee4 como por ejemplo escribir en la
consola para obtener inormaci$n sobre "l. %n%e tambi"n se p%ede lan,ar el error con el operador throw.
Lan,ar %n error consiste en elevarlo hacia arriba coniando en %e eista %n try6catch %e lotratará de orma adec%ada.
*+,'(+ eXeHp6oErrorM:
-
8/19/2019 Cosas de TS
116/154
-
8/19/2019 Cosas de TS
117/154
-
8/19/2019 Cosas de TS
118/154
10. -4O
10.1 IntroducciónLa manip%laci$n de las páginas ?ebs es %no de los %sos más habit%ales %e se le da a J).
2ediante %na #B llamada =oc%ment Object 2odel 5=O26 podemos moldear a n%estro g%sto elcontenido de doc%mentos 0(2L y 2L. Esta #B nos proporciona %na serie de objetos conatrib%tos y m"todos m%y Atiles a la hora de obtener inormaci$n de la estr%ct%ra de la página y s%
contenido.=oc%mentos 0(2L 50(2L y 2L6 se dividen en nodos jerár%icos4 de orma %e
siempre %no está dentro de otro s%perior. Estos están representados4 entre otros4 por eti%etas 0(2Lcomo SaT o SdivT. El objeto window es el %e está posicionado en la parte s%perior de esta jerar%a.Pste contiene al objeto docment %e el %e posee los m"todos necesarios para la manip%laci$n del=O2.
http://es.?i
-
8/19/2019 Cosas de TS
119/154
10.2.1.1 get*le"entPIdMN
)eleccionar el elemento c%yo atrib%to id coincida con el proporcionado como arg%mento.
-
8/19/2019 Cosas de TS
120/154
-
8/19/2019 Cosas de TS
121/154
17. *ventos
17.1 IntroducciónLos eventos son s%cesos %e oc%rren d%rante la ejec%ci$n de la aplicaci$n. #%eden dispararse
debido a %na interacci$n del %s%ario o como resp%esta a determinadas acciones de n%estro programa.
C%ando %n %s%ario hace click del rat$n sobre %n bot$n o c%ando p%lsa %na tecla4 o c%ando laaplicaci$n ha terminado de cargar4 se lan,an eventos.
#ara ciertos eventos nos interesa darle %na resp%esta mediante %na %nci$n. )on los llamadoshandlers 5manejadores6 y para ello hay %e asociar %n listener 5oyente6 a los elementos s%sceptiblesde la