📜  打字稿类

📅  最后修改于: 2022-05-13 01:56:20.160000             🧑  作者: Mango

打字稿类

就OOP(面向对象编程)而言,类是用于创建对象的蓝图。类是具有共同属性的对象的集合。它包含方法、构造函数、块、嵌套类、接口等。对象基本上是具有某些属性的实体,例如现实世界中的对象(椅子、桌子等)。
Typescript 是一种基于 Javascript 构建的开源编程语言,也称为 Javascript 的超集。与 Javascript 相比,Typescript 具有更多功能。它支持面向对象的编程特性,如类、接口、多态等。

声明类的语法:

// typescript code
class class_name{
    field;
    method;
}

上面的代码在传递到 typescript 编译器时将被转换为下面显示的 javascript 代码。我们可以自由使用任何名称来代替 class_name。

// code converted to javascript
var class_name = /** @class */ (function () {
    function class_name() {
    }
    return class_name;
}());

注意:打字稿代码使用 .ts 扩展名保存。
让我们也看看一些打字稿示例:

// typescript code
class Student {
    studCode: number;
    studName: string;
  
    constructor(code: number, name: string) {
        this.studName = name;
        this.studCode = code;
    }
    getGrade() : string {
        return "A+" ;
     }
} 

该示例声明了一个 Student 类,该类具有两个字段studCodestudName以及一个构造函数,该构造函数是负责变量或对象初始化的特殊类型的函数。这里是参数化构造函数(已经有参数)。而this关键字指的是类的当前实例。 getGrade()是一个返回字符串的简单函数。
上面的 typescript 代码将被转换为 javascript 代码,如下所示:

// converted javascript code
var Student = /** @class */ (function () {
    function Student(code, name) {
        this.studName = name;
        this.studCode = code;
    }
    Student.prototype.getGrade = function () {
        return "A+";
    };
    return Student;
}());

对象
对象是包含一组键值对的类的实例。它的值可能是标量值或函数,甚至是其他对象的数组。
对象的语法类似于下面的代码:

// simple object code in javascript
let object_name = { 
   key1: “value”,  
   key2: function() {
      //functions 
   }, 
   key3:[“content1”, “content2”] //collection  
};

一个对象可以包含标量值、函数和结构,如数组和元组。
让我们看一个简单的例子:

// simple javascript code
let person = {
   fName:"Mukul", 
   lName:"Latiyan", 
   Hello:function() {  }  //Type template 
} 
person.Hello = function() {  
   console.log("Hello "+person.fName)
}  
person.Hello()

输出:

// typescript object example
var person = { 
   fname:"Mukul", 
   lname:"Latiyan" 
}; 
var hello = function(obj: { fname:string, lname :string }) { 
   console.log("first name :"+obj.fname) 
   console.log("last name :"+obj.lname) 
} 
hello(person)

输出:

用于创建实例对象。
要创建类的实例,请使用new关键字后跟类名。在运行时借助new为对象分配内存。像:

let object_name = new class_name([ arguments ])

为了创建一个对象的实例,我们可以像下面的代码那样做。

let obj = new Student();  

访问属性和函数:
对象可以访问类的属性和功能。在...的帮助下 ' 。 ' 点表示法或方括号表示法([”])我们访问一个类的数据成员。

//accessing an attribute 
obj.field_name or obj['field_name']

//accessing a function 
obj.function_name()

考虑下面的代码:

// typescript code
class Car { 
   //field 
   engine:string; 
     
   //constructor 
   constructor(engine:string) { 
      this.engine = engine 
   }  
     
   //function 
   display():void { 
      console.log("Function displays Engine is  :   "+this.engine) 
   } 
} 
  
//create an object 
var o1 = new Car("geeks")
  
//access the field 
console.log("Reading attribute value Engine as :  "+o1.engine)  
  
//access the function
o1.disp()

编译后,此代码将转换为如下所示的 javascript:

// converted javascript code
var Car = /** @class */ (function () {
    //constructor 
    function Car(engine) {
        this.engine = engine;
    }
    //function 
    Car.prototype.display = function () {
        console.log("Function displays Engine is  :   " + this.engine);
    };
    return Car;
}());
//create an object 
var o1 = new Car("geeks");
//access the field 
console.log("Reading attribute value Engine as :  " + o1.engine);
//access the function
o1.disp();

输出: