首页 > 其他分享 >TypeScript:类的类型变量

TypeScript:类的类型变量

时间:2022-09-26 20:02:00浏览次数:51  
标签:Boy TypeScript 变量 子类 Person let 类型 extends 父类

class Person { 
    //脱衣服
    private disrobe() {
        //.....
    }
    // 穿衣服
    private dress() {
        //.....
    }
    //洗操
    public takeAbath() {
        this.disrobe();
        console.log("洗澡了");
        this.dress();
    } 
    //睡觉
    public sleep() {
        this.disrobe();
        console.log("睡觉了");
        this.dress();
    }
    public eat() {
        console.log("吃东西了...");
    }
} 

class Boy extends Person {
    static eat() {
        super.eat();
        console.log("别忘记了做好看的吃像...")
    }
    static birth() {
        console.log("生...");
    }
}

 

一、类变量指向该类的对象

类也是一种自定义类型,用于指向该类对象, 类变量也可以赋值为null或undefined

let person1:Person = new Person();
person1.eat(); 
​
let boy1: Boy = new Boy();
boy1.eat();

 

二、父类变量指向子类对象

此处只讲语法, 关于类变量指向子类对象的核心思想,见后面多态相关章节

父类变量可以指向子类对象,指向子类的子类的对象也可以, 比如父类是"人(Person)",子类是"男孩(Boy)",因为男孩本就是人,所以可以用人指向它, 只是男孩对象被人指向后,只把男孩当人看待,不当男孩看待. 以当前示例为例,对于let person2: Person = new Boy();而言。 person2只能访问Person类中的成员,不能访问Boy中的成员

let person2: Person = new Boy();
person2.eat();//执行了父类Person中的eat方法 
person2.sleep();//执行了父类Person中的sleep方法 
// person2.birth();错,因为不能把person2当作Boy看待,所以不能访问Boy中的成员

 

三、类型断言

 

当一个父类类型变量指向子类对象时,可以通过”类型断言“ 把该变量强制转换成子类类型变量

let person: Person = new Boy();
let boy = <Boy>person;//类型断言
//let boy = person as Boy;
boy.sleep();
boy.eat();

 

当父类类型变量指向间接子类对象时,该变量可以类型断言成子类的父类类型,断言成什么类,就只能当作该类的对象访问成员了。

如:

A extends B,   B extends C,  C extends D,  D extends F;
let obj1: F = new A();
let obj2 = <C> obj1;
//obj2可以说部C对象能访问的成员

 

四、Object变量

 

Object是一切类的父类,所以可以指向一切对象。

A extends B,   B extends C,  C extends D,  D extends F;
let obj1:Object = new A();
let obj2 = <C> obj1;
//obj2可以说部C对象能访问的成员

 

 

标签:Boy,TypeScript,变量,子类,Person,let,类型,extends,父类
From: https://www.cnblogs.com/LIXI-/p/16732161.html

相关文章

  • TypeScript:函数
    接口中使用函数接口可以描述函数类型;为了使用接口表示函数类型,我们需要给接口定义一个调用签名。它就像是一个只有参数列表和返回值类型的函数定义。参数列表里面的每个参......
  • TypeScript:类
    一、概念简单认知类是现实世界或思维世界中的实体在计算机中的反映,它将数据(属性)以及这些数据上的操作(方法)封装在一起。对象是具有类类型的变量。类和对象是面向对象......
  • TypeScript:类型断言
    什么是类型断言有些时候,我们需要做一些“自己比编译器更清楚的知道自己在做什么”,这个时候就用到断言,告诉编译器:没错,就是这样的,就是要这么干。编译器也就假设:嗯,这个程序员......
  • TypeScript:运行环境搭建
    环境搭建1、安装node(16版本)2、全局安装TypeScript指令:npmi-gtypescript3、查看版本指令:tsc-v4.创建tsconfig.js文件指令:tsc--init 文件:{"c......
  • Python数据类型+运算符
    Python基础数据类型上期练习讲解#练习一.想办法打印出jasonl1=[11,22,'kevin',['tony','jerry',[123,456,'jason']]]#解题思路,先看列表中有几个数......
  • 基本数据类型(补)及各种运算符
    1、昨日内容回顾python注释编写注释意义、注释添加方法变量的赋值赋值基本原理变量的使用命名原则、编写风格常量的使用常量的命名python常见数据......
  • 基本数据类型
    数据类型在记录变量或者常量时,数据值需要合适的类型进行记录,比如等级可以用数字记录,比如名字需要用文字记录,在python中,有几个常用的数据类型需要掌握,能帮助我们更好的......
  • TypeScript:特征
    类型系统:1.TypeScript是静态类型: 类型系统按照「类型检查时机」来分类,可以分为动态类型和静态类型。动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会......
  • TypeScript 的一些编译选项
    compilerOptionsstrict231forceConsistentCasingInFileNames231noImplicitOverride231noPropertyAccessFromIndexSignature231noImplicitRe......
  • 记录multipartFile表单类型转化为file
    导入依赖<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.7</version></dependency>调用其中的方法 ......