Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TDL [75.31-95.07]

PadrónAlumno
104105Jonathan David Rosenblatt
103545Matías Alberto Venglar
104348Joaquín Betz
103924Joaquín Fontela

Requirements for Linux users:

  • For the npm package manager run: sudo apt install npm

  • Install TypeScript: npm install typescript

  • Install the TypeScript compiler: npm install tsc

  • To crate a React proyect with Typescript run: npx create-react-app <APPNAME> --template typescript

  • Read files line by line: npm install --save n-readlines

  • Discord module: npm install discord.js

  • Read environmental variables: npm install dotenv

  • Compile .ts project: npx tsc --jsx react-jsx

  • Run Discord bot: npm run start

  • Run React App: npm run start --prefix src/react/my-app

  • To create the server: npm install express

The TypeScript Language

TypeScript is a JavaScript superset and therefore they share many features such as variable declaration, API's usage, and more.

Variables:

You can declare variables in TypeScript with: var, let and const.

  • Const allows you to declare global variables that cannot be reassigned. They must also be initialized.
  • Var creates a variable that lives globally within a function or global scope.
  • Let, in the other hand, creates a variable that only lives locally within a scope.

Types:

One could guess from the name of the language that types are important here. One of TypeScript's most important features, and maybe even the most important, it's their typing system.

TypeScript is this sort of a "Strongly Typed JavaScript" meaning that each variable needs to be declared under a specific type. This excelent feature allows the software to check for the validity of operations, assignments, potential errors caused due to changing types and more.

Boolean:

let aprueboProba: boolean = false;

Numbers:

All numbers are either floating point (number type) or bigint types (bigint type):

let decimal: number = 6;

let hex: number = 0xf00d;

let binary: number = 0b1010;

let octal: number = 0o744;

let big: bigint = 100n;

String:

Every string shall be wrapped around single or double quotes:

let salute: string = "Sup";

Arrays:

There are two ways of declaring arrays:

let list: number[] = [9, 99, 999];

let list: Array<Number> = [999, 99, 9];

They can also be readonly:

let list: ReadonlyArray<Number> = [999, 99, 9];

Tuples:

With tuples you can have a fixed number of variables stored in the same place, as long as the compiler know what type does each position of the tuple have.

let tupla: [string, number] = ["Working", 1];

💥 tupla = [404, "This ain't working dawg."]; 💥

Enums:

You can manually set the how you access each member of the enum, by changing its index.

enum Animal {
dog, cat,
}
...
let a: Animal = Animal[1] // 🐈
enum Animal {
dog = 1, cat,
}
...
let a: Animal = Animal[1] // 🐕

Unknown:

Variables with unknown types can have any kind of value stored into them, at any part of the program execution.

let mysterious: unknown = ...

It is also useful to know what the typeof check will return you a string value which corresponds to the variable type. This can come in handy when dealing with unknown types.

Any:

Let's you bypass the typing check. One could say that, unlike unknown, any variables have no type. Avoid unless it is necessary.

Void:

Only useful when a function does not return any kind of value, or when a variable is either null or undefined.

Never:

Declares something that should never happen. Useful to raise errors.

let boom: never = (() => { throw new Error("Oh crap") })();

Object:

Object is a type that reresents anything that is not number, string, boolean, bigint, symbol, null, or undefined.

Union Types:

If you know that a variable can only have certain types, then you can name them between pipes:

let stringornumber: string | number = ...;

Or even certain values:

let dice: 1 | 2 | 3 | 4 | 5 | 6;

Intersection Types:

Let's you have the properties of every entity referenced:

let explosiveFork: fork & bomb;

Type Casting:

You can cast types with as:

let something: unknown = "this is a string";

let len: number = (something as string).length;

And with the “angle-bracket” syntax:

let something: unknown = "this is a string";

let len: number = (<string>something).length;

Readonly:

Keeps members readonly, obviously.

Interface:

Describes objects that must have a certain member (all public):

interface LabeledValue {
label: string;
}
let myObj = { size: 10, label: "Size 10 Object" };

If a property is not always requiered, you can describe this by adding a ? at the end of it:

interface CoffeeBox {
readonly label: string;
readonly expired: boolean,
readonly discountcode?: string,
}
// They can also be readonly properties.

Interfaces can inherit properties from anothers:

interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}

Classes:

Classes that implement interfaces must follow it's contract. These can have non-public properties.

interface ClockInterface { currentTime: Date; }

class Clock implements ClockInterface { currentTime: Date = new Date(); constructor(h: number, m: number) {} }

Extending a interface (or many, which is possible) copies its properties to the class instance.

Rest Parameters:

Variables can have an unknown number of values you can use:

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// employeeName will be "Joseph Samuel Lucas MacKinzie"
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

About

📚 El FIUBA-Bot te permite gestionar y visualizar datos relevantes para tu paso por la facultad!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages