Professional Documents
Culture Documents
TYPESCRIPT JAVASCRIPT
Tipat de dades estàtic. Sempre mantindrà Tipat de dades dinàmic. L’intèrpret defineix
el mateix tipus d’objecte o variable en el tipus de l’objecte o variable en temps
temps d’execució. Si una variable es d’execució. Una variable pot iniciar-se com
defineix com a string, sempre ho serà. un string i aquesta mateixa variable pot
passar a ser numèrica.
Per a projectes mitjans i grans, atès que el codi typescript s’ha de compilar per
transformar-lo a javascript.
El compilador ajuda a detectar errors abans de publicar el treball.
Variables:
o number, string, boolean…
o let identifacor: string;
o let arreglo: string[] = [“Fran”, “Ari”];
o let comodin: any; o també let comodin; //pot emmagatzemar qualsevol tipus.
No recomanat
o var identificador: tipo; // variables d’àmbit global si estan definides fora d’una
funció, i d’àmbit local si estan definides dins una funció (i només existeix per a
aquesta funció). Per tant, es poden tenir dues variables amb el mateix
identificador però en àmbits diferents i amb referències a memòria diferents.
o let identificador: tipo; //recomanat. Funcionament similar al var. Amb un
scope més específic que evita la sobre escriptura al declarar variables. La
variable només pertany al bloc entre {}
o const identificador: tipo = valor; //per declarar constants. Scope pertany al
bloc entre {}. Prohibeix la reassignació de valors, al contrari que les i var que si
permet resignar valors.
Funcions:
Objectes:
o Entitat amb característiques (atributs) que la fan diferent a la resta i pot
realitzar diferents accions (mètodes)
Classes:
o Motlle que serveix per crear nous objectes que comparteixen atributs però
amb diferents valors i mètodes. Són objectes que es poden agrupar dintre
d’una categoria atès que comparteixen característiques i accions entre ells. Per
exemple, un Renault Kadjar i un Nissan Qashqai pertanyen a la classe SUV ja
que tenen 4 rodes, acceleren, frenen i tenen una alçada lliure més elevada que
la resta de turismes. Per tant, els objectes que es derivin de la classe SUV
hereten unes atributs i uns mètodes però amb diferents valors. Per exemple,
un SUV pot tenir diferent color, motor, marca, equipament, etc, però
continuarà sent un SUV. Per tant, un Renault Kadjar és una instancia de la
classe SUV.
class Speaker{
hi(nombre: string) {
console.log(nombre);
}
}
let speaker: Speaker = new Speaker();
speaker.hi("Yowi");
Class Lapiz:
color =’Amarillo1
tamaño_centimetros = 10
material = ‘madera’
def pintar(self):
print(‘Pintar sobre una superficie’)
lapiz_rojo = Lapiz()
class Video { }
let miVIdeo: Video = newVideo();
Constructor:
o És únic per a cada classe, no retorna resultat i no es pot repetir. S’hi defineixen
els paràmetres per crear nous objectes.
class Video{
constructor(title: string) {
console.log(title);
}
}
let miVideo: Video = new Video("Hola mundo");
Propietats i mètodes:
class Video{
title: string;
constructor(title: string) {
this.title = title;
}
printTitle() { console.log(this.title); }
changeTitle(title: string) { this.title = title; }
getTitle(): string { return this.title;}
}
miVideo.printTitle();
miVideo.changeTitle("Demo");
console.log(miVideo.getTitle());
Herència:
o Partint d’una classe base es poden crear altres classes que descendeixen de la
classe principal.
//Classe Pare
class Video{
title: string;
constructor(title: string) {
this.title = title;
}
play() { console.log("Playing"); }
stop() { console.log("Stopped");}
}
miVideo.play();
Sobre escriptura:
o Es vol modificar un mètode heretat de la classe Pare.
//Classe Pare
class Video{
title: string;
constructor(title: string) {
this.title = title;
}
play() { console.log("Playing"); }
stop() { console.log("Stopped");}
}
miVideo.play();
//Classe Pare
class Video{
title: string;
constructor(title: string) {
this.title = title;
}
play() { console.log("Playing"); }
stop() { console.log("Stopped");}
}
miVideo.play();
Modificadors d’accés (encapsulació):
o Públic: totalment accessible.
o Protected: accessible a les subclasses.
o Private: No accessible fora de la classe ni a les subclasses.
class Video{
public title: string;
constructor(title: string) {
this.title = title;
}
}
class YouTube extends Video{
printTitle() {
console.log(this.title);// no error
}
}
let miVideo: Video = new Video("Hola mundo");
console.log(miVideo.title);// no error
class Video{
protected title: string;
constructor(title: string) {
this.title = title;
}
}
class YouTube extends Video{
printTitle() {
console.log(this.title);// no error, està dintre de la sublclasse
}
}
let miVideo: Video = new Video("Hola mundo");
console.log(miVideo.title); // error, no està ni a la classe ni a la subclasse
class Video{
private title: string;
constructor(title: string) {
this.title = title;
}
}
class YouTube extends Video{
printTitle() {
console.log(this.title);// error, no està dintre de la classe o subclasse
}
}
let miVideo: Video = new Video("Hola mundo");
console.log(miVideo.title);// error, no està dintre de la classe o subclasse
class Video{
private _title: string;
constructor(title: string) { this._title = title; }
console.log(miVideo.title);
Requestor.getArticles();
Interfícies:
o Implementada per una classe.
o Només és una plantilla formada per propietats i mètodes de les classes.
o No assigna valors, només defineix una plantilla.
o Una classe només pot heretar d’una altra classe. Però una classe pot heretar
d’una altra classe i implementar tantes interfícies com es vulguin.
interface Asset{
x, y, width, height: number;
getCoords(): string;
}
class Hero implements Asset{
x: number;
y: number;
width: number;
height: number;
getCoords(): string{
return "";
}
}
class Bullet implements Asset{
x: number;
y: number;
width: number;
height: number;
getCoords(): string{
return "";
}
}
class Enemy implements Asset{
x: number;
y: number;
width: number;
height: number;
getCoords(): string{
return "";
}
}
//Classe Spacebullet hereda de Bullet i implmenta la interfíce Asset
class SpaceBullet extends Bullet implements Asset{}
class Collisions{
static check(obj: Asset, object2: Asset) {
//Validar que exista forma de comparar los elementos
//Compare obj with object2
//Permite comprovar que los elementos cumplan con la estructura para realizar la
comparación
//Solo se pueden recibir objetos que cumplan con los argumentos definidos en la
interface
}
}
Classes abstractes:
o Similar a les interfícies però a diferència d’elles, si poden tenir
implementacions.
o No es poden instanciar.
o Poden contenir mètodes abstractes
o Un classe si pot heretar d’una classe abstracta (ha d’implementar els mètodes
que es vulguin heretar).
o Un cop s’hereta de la classe abstracta, ja no es pot heretar d’altres classes.
namespace CF{
export class YouTube { }
export const url: string = "htttps://codigofacilito.com"
const privado: string = "123";
Type assertions:
o Permet emmagatzemar per separat cadascun dels objectes que formen un
objecte creat mitjançant un Intesection types.
o Corregeix el tipus que typescript ha assignat a un objecte per quin li diguem.
o Permet substituir un tipus per un altre amb “as”.
class User {
name: string;
}
class Admin {
permissions: number;
getPermission() { }
}
let user: User & Admin;// crea un nou tipis User&Admin
user.name = "Uriel";
user.permissions = 5;
user.getPermission();
user = new User() as User&Admin;//diu al compilador que User és un User&Admin
Type aliases (alies de tipus):
o Permet definir un àlies per a un tipus existent.
Tuplas:
o Array a on es defineixen els tipus que la conformen.
o Array que pot emmagatzemar diferents tipus de dades.
o Si es defineixen dos tipus diferents per a les entrades 0 i 1, la resta d’entrades
pot ser dels tipus 0 o tipus 1.
tupla[0] = 'Hola';
tupla[1] = 20;
tupla[2] = 'Holi'; // string | number són correctes
Enum:
o Serveix per assignar un nom a un conjunt de valors numèrics per poder
identificar-los d’una manera més clara.
@Decorador
class Speaker{
@Decorador
class Listtener{
Genèrics: