美文网首页
TypeScript学习笔记

TypeScript学习笔记

作者: SentMes | 来源:发表于2020-03-26 14:23 被阅读0次

枚举

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName);  // 显示'Green'因为上面代码里它的值是2

编译后

var Color;
(function (Color) {
    Color[Color["Red"] = 1] = "Red";
    Color[Color["Green"] = 2] = "Green";
    Color[Color["Blue"] = 3] = "Blue";
})(Color || (Color = {}));
var colorName = Color[2];
console.log(colorName);

此时Color对象内部结构为


image.png

所以Color[2]打印的结果会为Green

ps:解释赋值原理

var a
console.log(a="abc") //打印的结果为abc
//所以
Color[Color["Red"] = 1] = "Red";
//Color["Red"] = 1赋值完成后会演变成
Color[1] = "Red";
//所以最终枚举对象的结构才会如上图所示

private 和 protected 的共同的点以及不同点

共同点:
class Person {
    protected name: string;
    constructor(name: string) { this.name = name; }
}
let van= new Person("Van")
console.log(van.name)
//这时候编译会发生错误
class Animal{
    private name: string;
    constructor(name: string) { this.name = name; }
}
let dolphin= new Animal("Dolphin")
console.log(dolphin.name)
//这时也会出现编译错误的问题
//证明:不管是protected 或是 private 描述的成员都不可以在类外进行调用
不同点:
class Person {
    protected name: string;
    constructor(name: string) { this.name = name; }
}

class Employee extends Person {
    private department: string;

    constructor(name: string, department: string) {
        super(name)
        this.department = department;
    }

    public getElevatorPitch() {
        return `Hello, my name is ${this.name} and I work in ${this.department}.`;
    }
}

let howard = new Employee("Howard", "Sales");
console.log(howard.getElevatorPitch());
//此时将ts文件编译,不会有任何问题

如果将父类(超类)的name属性前置修饰符从protected 修改成 private 如:

class Person {
    private name: string;
    constructor(name: string) { this.name = name; }
}

class Employee extends Person {
    private department: string;

    constructor(name: string, department: string) {
        super(name)
        this.department = department;
    }

    public getElevatorPitch() {
        return `Hello, my name is ${this.name} and I work in ${this.department}.`;
    }
}

let howard = new Employee("Howard", "Sales");
console.log(howard.getElevatorPitch());
//那么这时候编译该ts文件就会报错
//结论:如果父类(超类)的成员修饰符为protected 那么该成员可以在子类中被调用(如:子类中的getElevatorPitch方法)
//而如果父类(超类)的成员修饰符为private 那么该成员将不可以在子类中被调用

相关文章

  • Typescript

    TypeScript(TS)部分 TypeScript学习笔记

  • Typescript 学习笔记六:接口

    目录: Typescript 学习笔记一:介绍、安装、编译 Typescript 学习笔记二:数据类型 Types...

  • TypeScriptz学习笔记

    TypeScriptz学习笔记 标签(空格分隔): TypeScript 撩课学院 安装TypeScript Ty...

  • Typescript

    学习笔记 菜鸟教程 《菜鸟教程》-TypeScript简介 《菜鸟教程》-TypeScript安装 《菜鸟教程》-...

  • 2019-10-16

    https://ts.xcatliu.com/introduction/get-typescript 学习笔记 入...

  • Typescript入门之:接口

    typescript基本使用笔记 安装typescript npm install -g typescript ...

  • TypeScript入门学习@郝晨光

    前言 现在TypeScript越来越火,咱也赶一下潮流,开始学习一下TypeScript,在学习的同时做笔记记录,...

  • Typescript 学习笔记

    数据类型 布尔值、数值、字符串、null、undefined,不包括 Symbol 布尔值 数值 字符串 空值 N...

  • typescript 学习笔记

    typescript 编译命令 tsc app.ts 基本数据类型 函数类型 Lambads和this关键字的使用...

  • TypeScript 学习笔记

    TypeScript 简介 TypeScript 是 Javascript 的超集, 语法糖角度引入了面向对象和强...

网友评论

      本文标题:TypeScript学习笔记

      本文链接:https://www.haomeiwen.com/subject/hthcuhtx.html