typescript TypeScript学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript TypeScript学习相关的知识,希望对你有一定的参考价值。

/// <reference path="../lib/typings/jquery.d.ts" />
class Cars {
   private cars: Array<Car> = new Array<Car>();

   load(): void {

       $.getJSON('http://localhost:53923/api/Car',
           (data) => {
               this.cars = data;
               alert('данные загружены');
           });
   }

   displayUsers(): void {
       var table = '<table class="table">';
       for (var i = 0; i < this.cars.length; i++) {

           var tableRow = '<tr>' +
               '<td>' + this.cars[i].id + '</td>' +
               '<td>' + this.cars[i].name + '</td>' +
               '<td>' + this.cars[i].model + '</td>' +
               '</tr>';
           table += tableRow;
       }
       table += '</table>';
       $('#content').html(table);
   }
}

window.onload = () => {
   var cars: Cars = new Cars();
   $("#loadBtn").click(() => { cars.load(); });
   $("#displayBtn").click(() => { cars.displayUsers(); });
};
import test = MyTestModule.MyTestClass;
module CarModule {
// объявляется модуль CarModule в нём есть интерфейс iCar.
   export interface ICar {
// ключевое слово export говорит нам о том, что данный интерфейс может быть видет извне нашего модуля. Если мы уберем слово export, данный интерфейс будет виден в скобках этого CarModule. 
       id: number;
       carModel: string;
       model: string;

       getCarInfo(): string;
   }

   export class Car implements ICar {
// создается класс Car, который имплементирует наш ICar
       id: number;
       carModel: string;
       model: string; // если мы удалим это поле, то IntelliSence предупредит о том, что не описано поле model

       constructor(carId: number, carModel: string, model: string) {
           this.id = carId;
           this.carModel = carModel;
           this.model = model;
       }

       getCarInfo(): string {
           var t = new test().getInfo();
           return "Car model = " + this.carModel + " model= " + this.model + " " + t;
       }
   }
}

let car = new CarModule.Car(16, "ВАЗ", "2107");
console.log(car.getCarInfo());
module GenericModule {
  function getId<T>(id: T) : T {
       return id;
   }
// Generic класс Animal, при создании мы передаём тип generic типа и устанавливаем id 
   class Animal<T> {
       private _id: T;

       constructor(id: T) {
           this._id = id;
       }

       getId(): T {
           return this._id;
       }
   }

   var cat = new Animal<number>(16);
   console.log("Cat id = " +  cat.getId());

   var dog = new Animal<string>("2327c575-2f7c-46c3-99f2-a267fac1db5d");
   console.log("Dog id = " + dog.getId());
}
module Encapsulation {
   class Animal {
       private _id: string;
       name: string;
       danger: number;

       constructor(name: string, danger: number) {
// заполнение приватного поля _id при создании метода в конструкторе.
           this._id = this.generateGuid();
           this.name = name;
           this.danger = danger;
       }

       private generateGuid(): string {
           var d = new Date().getTime();
           var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
               var r = (d + Math.random() * 16) % 16 | 0;
               d = Math.floor(d / 16);
               return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
           });
           return uuid;
       }

       public getInfo(): string {
           return "Id = " + this._id + " name = " + this.name + " danger = " + this.danger;
       }
   }

   var parrot: Animal = new Animal("Кеша", 1);
   console.log(parrot.getInfo());
interface IAnimal {
// свойства интерфейса — два поля и один метод
   name: string;
   danger: number;
   getInfo(): void;
}

class Animal implements IAnimal {
// наследуемся от реализованного интерфейса IAnimal
   name: string;
   danger: number;

   constructor(name: string, danger: number) {
       this.name = name;
       this.danger = danger;
   }

   getInfo(): void {
       console.log("Класс Животное. Имя: " + this.name + ", опасность: " + this.danger);
   }
}

class Fox extends Animal {
   tailLength: number;

   constructor(name: string, danger: number, tailLength: number) {
       super(name, danger);
       this.tailLength = tailLength;
// ключевое слово super — вызывает конструктор базового класса,
// инициализирует объект с начальными описанными в нём свойствами,
// а потом инициализируются свойства класса наследника.
   }

   getInfo(): void {
       super.getInfo();
       console.log("Класс Лиса. Длина хвоста: " + this.tailLength + " м");
   }
}

var goose: Animal = new Animal("Гусь", 1);
goose.getInfo();

var fox: Animal = new Fox("Фоксик", 10, 1);
fox.getInfo();
class Car {
// объявляются три поля
   id: number;
   name: string;
   model: string;

// инициализируется конструктор, создающий модель
   constructor(carId: number, carModel: string, model: string) {
       this.id = carId;
       this.name = carModel;
       this.model = model;
   }

// будет отображать информацию о автомобиле
   getCarInfo(): string {
       return "Car model = " + this.name + " model= " + this.model;
   }
}

///////////////////

class Formula {
   static PI: number = 3.14;
   static Half = 0.5;
//  расчитывается площадь круга
   static getСircleSquare(radius: number): number {
       return this.PI * radius * radius;
   }
// расчитывается площадь треугольника
   static getTriangleSquare(length: number, height: number): number {
       return this.Half * length * height;
   }
}

// созд. объект класса Formula и расчитываются значения
var circle = Formula.getСircleSquare(16);
var triangle = Formula.getTriangleSquare(4, 7);
console.log("Площадь круга = " + circle);
console.log("Площадь треугольника = " + triangle);

//////////////////////////

{
  "compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es5",
    "jsx": "react"
  },
  "files": [
    "./typings/index.d.ts",
    "./src/components/Hello.tsx",
    "./src/index.tsx"
  ]
}
module InterfaceModule {
// объявляется интерфейс IAnimal и описываются основные поля и методы этого класса
// и потом они реализуются непосредственно на классах наследниках.
   interface IAnimal {
       name: string;
       danger: number;

       getInfo(): string;
   }

   class Animal implements IAnimal {
       name: string;
       danger: number;

       constructor(name: string, danger: number) {
           this.name = name;
           this.danger = danger;
       }

       getInfo(): string {
           return this.name + " " + this.danger;
       }
   }

   var seal: IAnimal = new Animal("Тюлень", 1);
   console.log(seal.getInfo());
}

abstract class Animal {
  name: string;
  constructor(theName: string) { this.name = theName };
  abstract move(distanceInMeters: number): void;
}

class Snake extends Animal {
    constructor(name: string) { super(name); }
    move(distance) {
        console.log("Slithering");
    }
}


class Fish extends Animal {
    constructor(name: string) { super(name); }
    move(distance) {
        console.log("Swim");
    }
}

let snake: Animal = new Snake('snake');
snake.move(5);

以上是关于typescript TypeScript学习的主要内容,如果未能解决你的问题,请参考以下文章

typescript TypeScript学习

一份不可多得的 TypeScript 学习指南

TypeScript学习

TypeScript教程学习笔记16篇(完结)

TypeScript深入学习TypeScript装饰器

Typescript学习记录