Заметки по TypeScript
Набросал краткие заметки и шпаргалки по TypeScript. Для тренировки памяти и лучшего восприятие данного языка. Страница будет обновляться более новыми записями.
1. Установка TypeScript через NodeJS
npm install -g typescript
2. Watcher для компиляции TS в JS.
tsc -w app.ts
3. Типы переменных.
let Age: number = 25;
let Name: string = 'Иван';
let Text: string = `
Многострочный
текст
`;
let isDead: boolen = true; // or false
let x: undefined = undefined;
let y: null = null;
// Любой тип
let info: any = 123;
let info: any = 'string';
// Массивы
let list: number[] = [11, 12, 13];
let colors: string[] = ["Красный", "Синий", "Зеленый"];
// Кортежи
let userInfo: [string, number];
userInfo = ["Иван", 28];
// Enum
enum Season { Winter, Spring, Summer, Autumn }; // {0,1,2,3}
let current: Season = Season.Summer;
console.log(current); // 2
enum Season { Winter=0, Spring=1, Summer=2, Autumn=3
// Объекты
let person = {name:"Иван", age:25};
console.log(person.name);
// Несколько типов
let id: number | string;
4. Шаблоны строк
let firstName: string = "Иван";
let age: number = 35;
let text: string = `Имя ${firstName}. Возраст: ${age}`;
console.log(text); // Имя Иван. Возраст: 28
5. Функции с вводом и выводом по типу.
function add(a: number, b: number): number {
return a + b;
}
6. Стрелочные функции.
let sum = (x, y) => x + y +3;
let result = sum(1, 2);
console.log(result); // 6
let square = x => x * x;
let text = () => "Hello Friend";
console.log(square(5)); // 25
console.log(text()); // Hello Friend
7. Создание простого класса.
class User {
// Свойства
name: string;
age: number;
// Методы
getInfo(): string {
return "Имя: " + this.name + ". Возраст:" + this.age;
}
}
let ivan = new User();
ivan.name = 'Иван';
ivan.age = 18;
console.log(ivan.getInfo()); // Имя: Иван. Возраст:18
8. Создание класса с конструктором.
class User {
name: string;
age: number;
// Срабатывает при создании объекта
constructor(userName: string, userAge: number) {
this.name = userName;
this.age = userAge;
}
}
let ivan = new User('Иван', 18);
9. Класс со статическими методами (Без создания экземпляра класса).
const curDate = new Date;
const curYear: number = curDate.getFullYear();
class UserInfo {
static age: number;
static getYearBirth(age){
return curYear - age;
}
static isAdult(age){
let result: boolean = false;
if(age >= 18){
result = true;
}
return result;
}
}
let result1 = UserInfo.getYearBirth(24);
let result2 = UserInfo.isAdult(14);
console.log(result1,result2); // 1994 false
10. Методы доступа: set/get.
class User {
private _name: string;
public get name(): string {
return this._name;
}
public set name(n: string) {
this._name = n;
}
}
let Ivan = new User();
Ivan.name = "Иван"; // срабатывает set-метод
console.log(Ivan.name); // срабатывает get-метод
11. Переопределение конструктора и метода в дочернем классе (выполняется через super()
)
class User {
name: string;
age: number;
constructor(userName: string, userAge: number) {
this.name = userName;
this.age = userAge;
}
getInfo(): void{
console.log("Его зовут " + this.name + " и ему " + this.age + " лет.");
}
}
class Employee extends User {
company: string;
constructor(userName: string, userAge: number, userCompany: string) {
super(userName,userAge);
this.company = userCompany;
}
getInfo(): void {
super.getInfo();
console.log("И он работает в компании " + this.company + '.');
}
}
let Ivan: Employee = new Employee("Иван", 29, "Microsoft");
Ivan.getInfo(); //Его зовут Иван и ему 29 лет. И он работает в компании Microsoft.
12. Абстрактные классы. (нельзя от него создать объект)
abstract class Animal{
abstract getName(): void;
}
class Dog extends Animal{
constructor(public name: string){
super();
}
getName(): void{
console.log('Имя собаки ' + this.name);
}
}
let bobik: Animal = new Dog('Бобик');
bobik.getName();
Комментарии