PvasquezF / ArchivosPruebaOLC2

Aquí se van a almacenar archivos de pruebas para los proyectos
6 stars 32 forks source link

Dudas Proyecto 1 Segundo Semestre 2020 #29

Closed erflod5 closed 3 years ago

erflod5 commented 4 years ago

Hilo en el que se manejaran las dudas sobre el proyecto.

WSantos35 commented 4 years ago

Disculpa tengo dos dudas

  1. respecto a los arrays //se pueden declarar e inicializar let a: number=[10,20,15]; //o solo se pueden declarar para luego hacer uso de push, pop y length let a: number=[];

  2. respecto a si puede venir algo como lo siguiente referiendome a los types

type hijo={ Nombre:string };

type mytype={ valor1:hijo }; // Se debe especificar a que tipo de type pertenece asi como el type de abajo, o se puede de las dos formas? let nuevo_hijo={ Nombre:"hijo1" }

let padre:mytype={ valor1:nuevo_hijo } //la forma de acceder a los atributos puede venir asi, o solo se hara como el segundo console? console.log(padre.valor1.Nombre);

console.log(padre);

PvasquezF commented 4 years ago

Disculpa tengo dos dudas

  1. respecto a los arrays //se pueden declarar e inicializar let a: number=[10,20,15]; //o solo se pueden declarar para luego hacer uso de push, pop y length let a: number=[];
  2. respecto a si puede venir algo como lo siguiente referiendome a los types

type hijo={ Nombre:string };

type mytype={ valor1:hijo }; // Se debe especificar a que tipo de type pertenece asi como el type de abajo, o se puede de las dos formas? let nuevo_hijo={ Nombre:"hijo1" }

let padre:mytype={ valor1:nuevo_hijo } //la forma de acceder a los atributos puede venir asi, o solo se hará como el segundo console? console.log(padre.valor1.Nombre);

console.log(padre);

@WSantos35

  1. Si se puede inicializar con varios valores o vacío, los métodos pop, push y length aplican para cualquier array, a menos que el array no este inicializado (que solo esté declarado sin valor).

  2. Para la segunda duda

    • Para los types se tiene que definir el tipo explícitamente, no se va a poder inferir el tipo.
    • Y para la impresión puede ser de cualquier manera.
erflod5 commented 4 years ago

Mi duda es como utilizas la funcion execute en el codigo que nos pasaste de ejemplo, ya que esta heredada de una clase abstracta y veo que desde ahi se hacen las validaciones semanticas code

@Xvimnt Que tal companero con respecto a tu duda, como cada clase hereda de la clase abstracta, estas implementan los métodos que definís como abstractos, entonces al momento de llamar a la función execute en este caso, ejecutara el codigo que programes en cada clase que se implemente, entonces prácticamente allí programas lo que tu interprete tiene que hacer y haces tus validaciones.

gkruiz commented 4 years ago

Arbol9

Disculpa tenia una duda, para simular el analisis Descendente, la gramatica estaria escrita para un analisis ascendente, solo con la diferencia que al operar, en vez de sintetizar un valor ,este va a ser heredado verdad?, asi como en la imagen de este arbol , haciendo uso de la Pila, guardaria el primer 2 que esta hasta abajo en la pila , subiria por num , subiria a "E / E" , guardaria "/", luego bajaria en "num" , y ahi sacaria de la pila"/" y "2" , haria la division con 4 , operaria en ese nodo , guardaria en la pila el valor que dio , y de ahi subiria y asi haria con los demas nodos? ,y si no es asi entonces como lo analizaria , gracias

ghost commented 4 years ago

image

Como se hace para tener tu repositorio privado y usar github pages?

PvasquezF commented 4 years ago

image

Como se hace para tener tu repositorio privado y usar github pages?

Para usar github pages y el repositorio privado debes usar tu correo institucional (para tener la cuenta pro) y con esto ya se te permite eso.

PvasquezF commented 4 years ago

Arbol9

Disculpa tenia una duda, para simular el analisis Descendente, la gramatica estaria escrita para un analisis ascendente, solo con la diferencia que al operar, en vez de sintetizar un valor ,este va a ser heredado verdad?, asi como en la imagen de este arbol , haciendo uso de la Pila, guardaria el primer 2 que esta hasta abajo en la pila , subiria por num , subiria a "E / E" , guardaria "/", luego bajaria en "num" , y ahi sacaria de la pila"/" y "2" , haria la division con 4 , operaria en ese nodo , guardaria en la pila el valor que dio , y de ahi subiria y asi haria con los demas nodos? ,y si no es asi entonces como lo analizaria , gracias

La gramática (de las funciones) va a estar escrita para un análisis descendente. Para tu ejemplo debería ser un árbol como este image

wjosuep13 commented 4 years ago

Disculpa los arreglos van a permitir Multitype ? como estos ? let values: (string | number)[] = ['Apple', 2, 'Orange', 3, 4, 'Banana']; // or let values: Array<string | number> = ['Apple', 2, 'Orange', 3, 4, 'Banana'];

o en el caso que no se defina un tipo al inicio pero si se le haga una asignacion let arr = [1, 3, 'Apple', 'Orange', 'Banana', true, false];

y con lo de los types entonces como dijieron que si debe tener el tipo entonces se puede de estas 2 formas ? type mytype={ valor1:hijo };

const padre:mytype={ valor1:nuevo_hijo } o solo de la primera como habian dado el ejemplo en la explicacion ?

erflod5 commented 4 years ago

Disculpa los arreglos van a permitir Multitype ? como estos ? let values: (string | number)[] = ['Apple', 2, 'Orange', 3, 4, 'Banana']; // or let values: Array<string | number> = ['Apple', 2, 'Orange', 3, 4, 'Banana'];

o en el caso que no se defina un tipo al inicio pero si se le haga una asignacion let arr = [1, 3, 'Apple', 'Orange', 'Banana', true, false];

y con lo de los types entonces como dijieron que si debe tener el tipo entonces se puede de estas 2 formas ? type mytype={ valor1:hijo };

const padre:mytype={ valor1:nuevo_hijo } o solo de la primera como habian dado el ejemplo en la explicacion ?

  1. Solo se permite un tipo de dato
  2. No entiendo tu segunda duda pero seria algo como esto
    
    type hijo = {
    valor : number;
    }

type mytype = { valor1 : hijo; }

const hijo1 : hijo = {valor : 10}; const padre : mytype = {valor1 : hijo1}; const padre2 : mytype = {valor1: {valor : 10}}

javier3448 commented 4 years ago
type MyTypeA = {
    nombre: string;
}
let a: MyTypeA = {nombre: "Javier"};
let b: MyTypeA = a;
a = null;
console.log(b);

Que pasa ahi?

Como hago para ponerle label a mi pregunta?

erflod5 commented 4 years ago
type MyTypeA = {
    nombre: string;
}
let a: MyTypeA = {nombre: "Javier"};
let b: MyTypeA = a;
a = null;
console.log(b);

Que pasa ahi?

Como hago para ponerle label a mi pregunta?

@javier3448 si lo vemos a bajo nivel pasaria lo siguiente

//Se declara e inicializa la variable "a", esta apunta a un espacio de memoria donde estan almacenados sus atributos
//En este caso el atributo nombre 
let a: MyTypeA = {nombre: "Javier"};

//La variable b apunta al espacio de memoria que apunta "a"
let b: MyTypeA = a;

//Ahora "a" apunta a null, pero "b" aun tiene la referencia al espacio de memoria 
a = null;

//Imprime {nombre: "Javier"}
console.log(b);
javier3448 commented 4 years ago

Entiendo que los objetos y arreglos se pasan por referencia pero como se retornan? En los ejemplos se entiende mejor mi pregunta

type MyTypeA = {
    nombre: string;
}
let foo: MyTypeA = { nombre: "viejo" };

function getObj():MyTypeA{
    return foo;
}

function ejemplo1():void{
    let a = getObj();
    a.nombre = "Nuevo";
    let b = getObj();
    console.log(b.nombre);//imprime "Nuevo", cierto?
}

function ejemplo2():void{
    let a = getObj();
    a = null;
    let b = getObj();
    console.log(b);//aqui no imprimiria null cierto?
}

ejemplo1();
ejemplo2();
WSantos35 commented 4 years ago

`// Respecto a los array y los type que contienen arrays...

type nuevo={ nombre1: string, hijos:nuevo[] } // Se va a utilizar las dos formas permitidas de un array para typescript o solo la segunda forma? let lista_nuevos:Array;// 1era. let lista2_nuevos:[]; // 2da.

let hijotmp:nuevo={ nombre1:"hijo", hijos:Array }

let tmp:nuevo={ nombre1:"padre", hijos:[] }

hijotmp.hijos.push({nombre1:"nieto"});//Esta forma esta permitida para hacer un push de un type?`

CristianFrancisco85 commented 4 years ago

Para definir un type se puede de dos manera //Separado por coma cada attrib type myType ={ attrib1:number, attrib2:number, attrib3:string, } // Y separado por punto y coma type myType ={ attrib1:number; attrib2:number,; attrib3:string; }

¿Se va usar una en especifico o incluimos ambas ?

erflod5 commented 4 years ago

`// Respecto a los array y los type que contienen arrays...

type nuevo={ nombre1: string, hijos:nuevo[] } // Se va a utilizar las dos formas permitidas de un array para typescript o solo la segunda forma? let lista_nuevos:Array;// 1era. let lista2_nuevos:[]; // 2da.

let hijotmp:nuevo={ nombre1:"hijo", hijos:Array }

let tmp:nuevo={ nombre1:"padre", hijos:[] }

hijotmp.hijos.push({nombre1:"nieto"});//Esta forma esta permitida para hacer un push de un type?`

  1. Solo la 2da companero, la de Array si quieren pueden manejarla pero no la vamos a poner, solo []
  2. Si esta permitida esa operacion
erflod5 commented 4 years ago

Para definir un type se puede de dos manera //Separado por coma cada attrib type myType ={ attrib1:number, attrib2:number, attrib3:string, } // Y separado por punto y coma type myType ={ attrib1:number; attrib2:number,; attrib3:string; }

¿Se va usar una en especifico o incluimos ambas ?

Incluyan ambas

CristianFrancisco85 commented 4 years ago

Con respecto a la escritura de funciones anidadas

function fun1() : void{ function fun2() : number{ return x * 10; } let x = 100; let y = fun2(); console.log(y); }

¿La declaracion de funciones siempre es inmediatamente después de apertura de llaves o se puede poner de esta manera ?

function fun1() : void{ let x = 100; let y = fun2(); console.log(y); function fun2() : number{ return x * 10; } }

¿De si poderse lo anterior , es posible anidar mas de una función es una sola ?

marckomatic commented 4 years ago

Buenos dias, compañeros. Con dos dudas:

1) ¿Las funciones anidadas pueden estar definidas dentro de sentencias de control, por ejemplo podría venir esto?

function funcion1(a, b){ if(true){ function funcion2(){

          }
   }

}

2) ¿Los arreglos pueden tener más de una dimensión?

Muchas gracias.

erflod5 commented 4 years ago

Con respecto a la escritura de funciones anidadas

function fun1() : void{ function fun2() : number{ return x * 10; } let x = 100; let y = fun2(); console.log(y); }

¿La declaracion de funciones siempre es inmediatamente después de apertura de llaves o se puede poner de esta manera ?

function fun1() : void{ let x = 100; let y = fun2(); console.log(y); function fun2() : number{ return x * 10; } }

¿De si poderse lo anterior , es posible anidar mas de una función es una sola ?

@CristianFrancisco85 Puede venir en cualquier lado y puede tener 0 o mas funciones anidadas.

erflod5 commented 4 years ago

Buenos dias, compañeros. Con dos dudas:

  1. ¿Las funciones anidadas pueden estar definidas dentro de sentencias de control, por ejemplo podría venir esto?

function funcion1(a, b){ if(true){ function funcion2(){

          }
   }

}

  1. ¿Los arreglos pueden tener más de una dimensión?

Muchas gracias.

  1. No es posible
  2. Si
Abner-Hernandez commented 4 years ago

Las sentencias de control pueden venir fuera de las funciones, ya que en typescript si se puede ejemplo: let d : string = "test"; let m = undefined;

function example():string { return "Hello"; }

if(d != m) { console.log("this is correct in typescript"); }

Ademas de eso las llamadas a funcion como el print pueden ser usados fueras de las funciones

MarioRCS commented 4 years ago
  1. tengo esta duda, para el ejemplo: el type Name={ dato:String; Mismo:Name; } yo entiendo que variable:Name=null, se puede hacer, asignarle null a una variable Name, pero en el typescript online que dieron de prueba, dice que no se le puede asignar null ni undefine, que se puede hacer al respecto?

  2. Para los datos primitivos (palabras reservadas) los tipos, String, NUmber y Boolean, van al inicio con mayúscula? ya que entiendo que el intérprete es case-sensitive. Gracias

erflod5 commented 4 years ago

Las sentencias de control pueden venir fuera de las funciones, ya que en typescript si se puede ejemplo: let d : string = "test"; let m = undefined;

function example():string { return "Hello"; }

if(d != m) { console.log("this is correct in typescript"); }

Ademas de eso las llamadas a funcion como el print pueden ser usados fueras de las funciones

@Abner-Hernandez

  1. si pueden venir fuera y dentro de funciones
  2. El console.log puede ser usado en cualquier lugar
erflod5 commented 4 years ago
  1. tengo esta duda, para el ejemplo: el type Name={ dato:String; Mismo:Name; } yo entiendo que variable:Name=null, se puede hacer, asignarle null a una variable Name, pero en el typescript online que dieron de prueba, dice que no se le puede asignar null ni undefine, que se puede hacer al respecto?
  2. Para los datos primitivos (palabras reservadas) los tipos, String, NUmber y Boolean, van al inicio con mayúscula? ya que entiendo que el intérprete es case-sensitive. Gracias

@MarioRCS

  1. Si debe poder manejarse, en ese caso se tendrian que poner multiples tipos de dato, como a : type | null, pero como eso no esta, ustedes tienen que manejarlo.
  2. Minuscula (number, string, boolean)
TanyaMuhun commented 4 years ago

1.La palabra Array tambien seria en minusculas?

  1. el | y & vienen dobles o simples?
  2. en los types todos los atributos vienen separados ya sea con punto y coma, pero el ultimo tambien?, vi unos ejemplos donde el ultimo ya no tiene. 4.Los types y arreglos declarados como constantes pueden cambiar su valor/tamaño durante la ejecución? Gracias.
einjunge99 commented 4 years ago

Una consulta rápida, a como se plantea en el enunciado, las tres propiedades de los arreglos son push, pop y length, adicional a eso debemos contemplar tambien el acceso a los elementos por medio de un indice?

erflod5 commented 4 years ago

1.La palabra Array tambien seria en minusculas?

  1. el | y & vienen dobles o simples?
  2. en los types todos los atributos vienen separados ya sea con punto y coma, pero el ultimo tambien?, vi unos ejemplos donde el ultimo ya no tiene. 4.Los types y arreglos declarados como constantes pueden cambiar su valor/tamaño durante la ejecución? Gracias.
  1. Como lo especifica el lenguaje
  2. Dobles
  3. Dejalo como opcional, en el ejemplo que subio Pavel no lo tiene
  4. 
    const x = [1,2,3,4]; //Declaras una constante con arreglo de numeros 

x.push(5); //El tamaño del arreglo ahora es 5, la operacion es permitida

x = [1,2]; //Error, una constante no puede ser modificada,


Lo mismo para los types.
erflod5 commented 4 years ago

Una consulta rápida, a como se plantea en el enunciado, las tres propiedades de los arreglos son push, pop y length, adicional a eso debemos contemplar tambien el acceso a los elementos por medio de un indice?

@einjunge99 Si

einjunge99 commented 4 years ago

Vengo a fregar de nuevo. Por lo que leí, Typescript maneja un concepto de truthiness, por lo cual dentro de la evaluación de sentencias como el if se aceptan cosas como esta: if (123) { // Will be treated liketrue console.log('Any number other than 0 is truthy'); } donde si bien, 123 no es booleano, pero es clasificado como truthy como se indica y así muchas cosas más, por lo que en el proyecto debemos evaluar conforme a su truthiness o esperar booleanos y reportar ese 123 como error?

marckomatic commented 4 years ago

Buenos dias! Me surgió la siguiente duda con la declaración de arreglos: Si declaramos una variable y teniendo en cuenta que puede ser de multiples dimensiones (arreglos dentro de arreglos), seria necesario poner esta sintaxis? let arreglo: number [][][]...; o simplemente se puede dejar como: let arreglo: number [];? Puesto que a primera notacion seria una mera cosa de sintaxis ya que se podria seguir manejando arreglos dentro de arreglos si lo declaramos como la segunda sintaxis. Muchas gracias, espero su respuesta!

lcmr commented 4 years ago

Buenos dias! Me surgió la siguiente duda con la declaración de arreglos: Si declaramos una variable y teniendo en cuenta que puede ser de multiples dimensiones (arreglos dentro de arreglos), seria necesario poner esta sintaxis? let arreglo: number [][][]...; o simplemente se puede dejar como: let arreglo: number [];? Puesto que a primera notacion seria una mera cosa de sintaxis ya que se podria seguir manejando arreglos dentro de arreglos si lo declaramos como la segunda sintaxis. Muchas gracias, espero su respuesta!

que buena pregunta porque yo lo tome de otra forma let arreglo[] : number ....;

erflod5 commented 4 years ago

Buenos dias! Me surgió la siguiente duda con la declaración de arreglos: Si declaramos una variable y teniendo en cuenta que puede ser de multiples dimensiones (arreglos dentro de arreglos), seria necesario poner esta sintaxis? let arreglo: number [][][]...; o simplemente se puede dejar como: let arreglo: number [];? Puesto que a primera notacion seria una mera cosa de sintaxis ya que se podria seguir manejando arreglos dentro de arreglos si lo declaramos como la segunda sintaxis. Muchas gracias, espero su respuesta!

@marckomatic ambas formas, la segunda es un arreglo de numeros, no es un arreglo de arreglos

javier3448 commented 4 years ago

Cualquier objeto que instancie en jison no le sirven los métodos.

//[..]
//En jison:
Expr
    : Expr '+' Expr
    {
        $$ = new Expression(ExpressionKind.ADDITION, [$1, $3], @1.first_line, @1.first_column, @3.last_line, @3.last_column);
        $$.getNodeId();//Tira error de TypeError: this.$.getNodeId is not a function
    } 
//[...]

Pero cuando instancio desde typescript si puedo usar los metodos:

//en index.ts
//[...]
    let expr = new Expression(ExpressionKind.ADDITION, [1,2], 1,3,4,5);
    console.log(expr.getNodeId());//esto NO tira error
//[...]

Algo más para considerar es que todos los objetos que me retorna el parser tienen este problema entonces estoy totalmente estancado. Ayuda porfa :(

erflod5 commented 4 years ago

Cualquier objeto que instancie en jison no le sirven los métodos.

//[..]
//En jison:
Expr
    : Expr '+' Expr
    {
        $$ = new Expression(ExpressionKind.ADDITION, [$1, $3], @1.first_line, @1.first_column, @3.last_line, @3.last_column);
        $$.getNodeId();
    } 
//[...]

Pero cuando instancio desde typescript si puedo usar los metodos:

//en index.ts
//[...]
    let expr = new Expression(ExpressionKind.ADDITION, [1,2], 1,3,4,5);
    console.log(expr.getNodeId());//esto NO tira error
//[...]

Algo más para considerar es que todos los objetos que me retorna el parser tienen este problema entonces estoy totalmente estancado. Ayuda porfa :(

@javier3448 escribime a mi correo

xvimnt commented 4 years ago

Me esta dando problemas con el operador || Al parecer jison no lo toma en cuenta, envio screenshots de mi error, no encontre ningun resultado en internet Screenshot from 2020-08-28 22-52-20 En la parte del editor esta mi gramatica, y en la consola el error que me da.

wjosuep13 commented 4 years ago

Disculpen una duda a todas las instrucciones les debemos poner punto y coma al final, porque type script permite no ponerlas por ejemplo // aqui algunas declaraciones tienen ; al final y otras no y no da error let age: number = 32; const naom: string = "John" let isUpdated: boolean = true; let fruits: string[] = ['Apple', 'Orange', 'Banana'] let employee: [number, string] = [1, "Steve"];

// con los types igual puedo o no poner el ; despues del } y no da error type myTypo ={ attrib1:number, attrib2:number; attrib3:string };

type myType ={ attrib1:number, attrib2:number; attrib3:string; } como lo manejamos todo debe tener punto y coma al final ? exceptuando los metodos o hay alguna otra sentencia donde si se pueda omitir

javier3448 commented 4 years ago

Recuerdo que en un laboratorio mencionaron un par de paquetes para hacer un editor de texto con resaltado de syntaxis. Alguien tiene el nombre de esos paquetes o librerias?

WSantos35 commented 4 years ago

Para la funcion graficar_ts();

si se hace una traduccion debe mostrar la tabla de simbolos que usamos para la traducción tambien, o solo la tabla de simbolos para la ejecución?

Abner-Hernandez commented 4 years ago

Con un problema que no logro conseguir arreglar estoy trabajando con react, este problema me da en mi pagina publicada en git pages, localmente no me da problema y funciona bien, tiene que ver con mi parser cuando le doy analizar me lanza este error Uncaught TypeError: s(...).parse is not a function, ya hasta cambien la forma de importación pero lo mismo no me realizar el parser cosa que reitero localmente si funciona no me da ningun error.

aragonjc commented 4 years ago

La tabla de simbolos de la traduccion debe de tener solo el nombre y el tipo(string,numero..) o tambien tiene que tener el valor?

avilatorres commented 4 years ago

Con un problema que no logro conseguir arreglar estoy trabajando con react, este problema me da en mi pagina publicada en git pages, localmente no me da problema y funciona bien, tiene que ver con mi parser cuando le doy analizar me lanza este error Uncaught TypeError: s(...).parse is not a function, ya hasta cambien la forma de importación pero lo mismo no me realizar el parser cosa que reitero localmente si funciona no me da ningun error.

@Abner-Hernandez No sé como lo exportas pero quizá esto te puede servir: En el archivo.js al principio del todo en la variable con el nombre de tu archivo, antes de esa yo le coloco export. Ej: export var gramatica = (function(){... Y cuando importas el archivo sería: import {gramatica} from '[direccion de tu archivo]'; Luego ya puedes acceder a gramatica.parse(); A mi no me dio problema de esa forma.

raulxiloj commented 4 years ago

Recuerdo que en un laboratorio mencionaron un par de paquetes para hacer un editor de texto con resaltado de syntaxis. Alguien tiene el nombre de esos paquetes o librerias?

Codemirror y si estas trabajando con angular ya hay un paquete que lo facilita aun mas https://www.npmjs.com/package/@ctrl/ngx-codemirror

marckomatic commented 4 years ago

Buenos dias. Con esta pregunta: Al definir los tipos puedo asignar un valor por defecto? Es decir: type tipo = {edad:number = 14, nombre:string}

Muchas gracias.

MarioRCS commented 4 years ago

alguien tuvo problemas con el == y el ** en la parte de Exp?

marckomatic commented 4 years ago

Disculpen, tengo la duda de si puedo declarar tipos adentro de sentencias de control y funciones. Algo como: if(true) { type estudiante = {nombre:string, edad:number}; }

function nombre(){ type estudiante = {nombre:string, edad:number}; }

erflod5 commented 4 years ago

alguien tuvo problemas con el == y el ** en la parte de Exp?

@MarioRCS Tenes que ponerlas arriba del l '=' y del '*', ya que si los pones abajo te los toma como dos tokens diferentes

erflod5 commented 4 years ago

alguien tuvo problemas con el == y el ** en la parte de Exp?

@MarioRCS Tenes que ponerlas arriba del l '=' y del '*', ya que si los pones abajo te los toma como dos tokens diferentes

Disculpen, tengo la duda de si puedo declarar tipos adentro de sentencias de control y funciones. Algo como: if(true) { type estudiante = {nombre:string, edad:number}; }

function nombre(){ type estudiante = {nombre:string, edad:number}; }

@marckomatic No, solo globales

erflod5 commented 4 years ago

Buenos dias. Con esta pregunta: Al definir los tipos puedo asignar un valor por defecto? Es decir: type tipo = {edad:number = 14, nombre:string}

Muchas gracias.

@marckomatic No, solo id y tipo de dato.

erflod5 commented 4 years ago

Me esta dando problemas con el operador || Al parecer jison no lo toma en cuenta, envio screenshots de mi error, no encontre ningun resultado en internet Screenshot from 2020-08-28 22-52-20 En la parte del editor esta mi gramatica, y en la consola el error que me da.

@Xvimnt Lo pudiste arreglar?

erflod5 commented 4 years ago

Disculpen una duda a todas las instrucciones les debemos poner punto y coma al final, porque type script permite no ponerlas por ejemplo // aqui algunas declaraciones tienen ; al final y otras no y no da error let age: number = 32; const naom: string = "John" let isUpdated: boolean = true; let fruits: string[] = ['Apple', 'Orange', 'Banana'] let employee: [number, string] = [1, "Steve"];

// con los types igual puedo o no poner el ; despues del } y no da error type myTypo ={ attrib1:number, attrib2:number; attrib3:string };

type myType ={ attrib1:number, attrib2:number; attrib3:string; } como lo manejamos todo debe tener punto y coma al final ? exceptuando los metodos o hay alguna otra sentencia donde si se pueda omitir

Que si traiga ; al final