Typescript学习笔记: 类型限定、流程语句的细节、面向对象思想(封装、继承、多态)抽象类方法、接口和实现类、枚举等示例

作为JavaScript的超集Typescript非常值得大家学习的。

  • 类型限定、流程语句的细节、面向对象思想(封装、继承、多态)抽象类方法、接口和实现类、枚举等

  • 主要的是面向对象编程思想

下面是Typescript学习笔记:

Typescript学习笔记: 类型限定、流程语句的细节、面向对象思想(封装、继承、多态)抽象类方法、接口和实现类、枚举等示例

// Typescript学习笔记: 类型限定、流程语句的细节、面向对象思想(封装、继承、多态)抽象类方法、接口和实现类、枚举等示例// *** 数据类型的限定
let a: number;
let Y: string;
Y = 'xinyao'
a = 100;
console.log(a)
console.log(Y)let b = 10;
console.log(typeof b)
// 在ts中,浮点数也属于数据类型
let cc = 13.14;
console.log(typeof cc)let d = 'hello typescript'
console.log(typeof d)
// 在 typescript中,我们再设计的时候,可以不设置数据类型,像JavaScript一样,但是,底层的typescript是有区分的,并且我们也可以显示限定数据类型// 显示显示限定类型,例如下
let str: string;
str = '我是一个字符串'
console.log('typeof str')// 可以在限定的时候,同时赋值
let strs:string = '限定赋值';
console.log(strs, typeof strs)// 同样的, 数组的证明方式也是一样的// 1、 数字类型的数组(数字元素只能为数字)
const arr: number[] = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i++) {console.log(arr[i])
}
console.log(typeof arr)// 2、 字符串类型的数组(同理,只能存放字符串)
const strarr: string[] = ['a', 'b', 'c'];
for (let i = 0; i < strarr.length; i++) {console.log(strarr[i])
} 
console.log(typeof strarr)// 在 JavaScript和typescript中,所有的数组都是Object类型// any类型   (动态类型限定)类型不确定性,进行动态获取(不报错)
let anys: any;
anys = 10;
console.log(anys, typeof anys)
anys = 'typescript';
console.log(anys, typeof anys)// 枚举类型
enum MeiJu {// 类似于对象,键值对采用 : 和  =  赋值链接的区别Liu = 'liu',Jin = 'jin',Tao = 'toa'
}
console.log(MeiJu.Liu)
console.log(MeiJu)
console.log(typeof MeiJu) // object// 遍历可枚举的对象(包括枚举类型)
for (let key in MeiJu) {if (MeiJu.hasOwnProperty(key)) {console.log(MeiJu)}
}let p: boolean = false;
console.log(p)
console.log('------------------------------------------------------------------')// ***if 控制语句
let num:number = 22;let data:any = num;
if (data === 22) {console.log("存在");    // 存在
} else {console.log("不存在");
}
console.log('------------------------------------------------------------------')// *** switch 语句
let ch:number = 2
switch (ch){case 1 :{console.log('等级为1')break}case 2: {console.log('等级为2')break}case 3: {console.log('等级为3')break}default: {console.log('输入有误')break}
}console.log('------------------------------------------------------------------')// ***数组的定义和使用// 定义数组
let names: string[]  = ['Jack', 'Rose']// for int 迭代器 ,遍历得到数组角标
for (const i in names) {console.log(i + ':' + names)   // 0 Jack   1 Rose
}// for of  迭代器,直接得到元素
for (const name of names) {console.log(name)   // Jack   Rose
}console.log('------------------------------------------------------------------')// *** 函数的定义和使用// 1、无返回值的带参函数function fn (name: string): void  {console.log('你好,' + name + '!')      // "你好,LiuJinTao!"
}
// 调用函数
fn('LiuJinTao');// 2、有返回值的带参函数
function fn1 (x:number, y: number): number {return x + y;
}
let result:number = fn1(10, 30);        // 这里不限制类型也可以
console.log(result)         // 40// 3、箭头函数
let fn3 = (name: string) => {console.log('你好,' + name + '!')   // : "你好,LiuJinTao!"
}
fn3('LiuJinTao');   // 和Javascript中的箭头一样,和Java中的Lambda表达式一样// 4、函数的默认参数
function fn4 (num: number = 1314):number {return num
}
let r:number = fn4(520)     // 这里看你传不传,传就是你传的值,不传就是默认的1314
console.log(r)      // 520
console.log('------------------------------------------------------------------')// *** 面向对象Typescript具备面向对象的基本语法:例如 接口、类、枚举等。也具备继承、多态、封装的特征// 1. 定义枚举
enum Msg {HI = 'hi',HELLO = 'hello typescript'
}// 2. 定义接口,创建抽象方法、接收枚举为参数
interface A {ab(msg: Msg): void 
}// 3. 实现接口(实现类)
class B implements A {ab(msg: Msg):void {console.log(msg + '我重写了接口中的抽象方法ab')}
}// 4. 创建实现类对象
let c: A = new B();// 5. 通过对象引用调用抽象方法(重写后的方法)
c.ab(Msg.HELLO);    // "hello typescript我重写了接口中的抽象方法ab"console.log('------------------------------------------------------------------')// *** 面向对象的练习// 定义一个矩形类
class Rectangle {// 将成员变量私有化private width: numberprivate height: number// 手写一个带参构造函数constructor(width: number, height: number) {// 通过this 指向本类的实例,也就是可以访问这个类中的所有this.width = widththis.height = height}// 定义一个成员方法public area():number {return this.width * this.height}
}// 定义一个正方形类  (继承 extends(共享父类中所有非私有化的成员))
class Square extends Rectangle {constructor(side: number) {// 调用父类构造器super(side, side)}
}let s:Square = new Square(10) // 构造器创建对象的时候,传值用于初始化数据
console.log('正方形的面积为:' + s.area())  // 100// typescript 模块化开发// 定义一个矩形类,并通过export导出
export class Rectangles {public width: numberpublic length: numberconstructor(width: number, length: number) {this.width = widththis.length = length}
}// 定义一个工具方法,求矩形面积,然后导出
export function areas(rec: Rectangles): number {return rec.width * rec.length
}// 导入 使用定义的模块  语法:import {类名/方法名等成员}  from  该所在的路径  (就是导包)
// import {Rectangles, areas} from '../xxx'// let r = new Rectangles(10, 20)
// console.log('面积为:' + area(r))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

麒麟操作系统进入单用户模式

Kylin V4 桌面版&#xff1a; 启动系统后&#xff0c;在启动菜单界面选择 Kylin 4.0.2 高级选项后回车。 在高级模式选项下选择第二行 recovery mode 模式后&#xff0c;按 e 编辑。 按 e 后如下图&#xff0c;找到 linux 开头的一行&#xff0c;修改 ro 为 rw 后&#xff0c…

[c语言c++]手写你自己的swap交换函数

函数传参有按值传递&#xff0c;指针传递&#xff0c;引用传递&#xff0c;分别看一下三种情况下的交换函数如何书写&#xff0c;应该使用哪种最方便。 当书写一个交换两个值的 swap 函数时&#xff0c;我们可以分别使用按值传参、指针传参和引用传参的方式来实现。下面是示例和…

北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(2)设计一个24秒倒计时器

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1 counter_24.v 1.2 divid…

linux系统下的nginx服务安装

一. 环境 在安装nginx前&#xff0c;需要提前配置的环境包括 pcre&#xff1a;rewrite正则相关pcre:URL重写软件&#xff0c;实现伪静态\URL跳转等、SEO优化。 openssl&#xff1a;https加密访问用它 zlib&#xff1a;提供数据压缩用1.安装pcre 1.1 检查版本 执行&#xff…

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法&#xff0c;可以使用findElements返回的数量判断&#xff1b;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…

@Transactional注解失效的几个场景

一、Transactional注解作用在修饰符为非public的方法&#xff0c;Transactional注解不起作用。 Service public class ComeServiceImpl implements ComeService {AutowiredUserMapper userMapper;OverrideTransactionalint saveUser() {User user new User("qitian"…

window10家庭版中文转专业版流程

1.确认当前为家庭中文版 2.用管理员权限打开cmd窗口 3.输入 dism /online /get-targeteditions &#xff0c;查询当前支持的升级的版本 4.专业版密钥&#xff1a;VK7JG-NPHTM-C97JM-9MPGT-3V66T 5.changepk.exe /productkey VK7JG-NPHTM-C97JM-9MPGT-3V66T

C#,《小白学程序》第二十三课:大数的除法(BigInteger Divide)

1 文本格式 /// <summary> /// 比较a&#xff0c;b的大小&#xff0c;返回1&#xff0c;0&#xff0c;-1 /// 数据从低位&#xff08;右&#xff09;往高位&#xff08;左&#xff09;存储; /// </summary> /// <param name"a"></param> ///…

【Qt绘图】之绘制坦克

使用绘图事件&#xff0c;绘制坦克。 效果 效果很逼真&#xff0c;想象力&#xff0c;有没有。 示例 代码像诗一样优雅&#xff0c;有没有。 包含头文件 #include <QApplication> #include <QWidget> #include <QPainter>绘制坦克类 class TankWidge…

【12】Python函数专题(下)

文章目录 1. 高阶函数1.1 以函数为参数1.2 以函数为返回值1.3 以函数为 参数和返回值2. 闭包3. 装饰器3.1 装饰器的引入3.2. 装饰器的使用3.3 装饰器强化练习🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

设计模式详解(三):工厂方法

目录导航 抽象工厂及其作用工厂方法的好处工厂方法的实现关系图实现步骤 工厂方法的适用场景工厂方法举例 抽象工厂及其作用 工厂方法是一种创建型设计模式。所谓创建型设计模式是说针对创建对象方面的设计模式。在面向对象的编程语言里&#xff0c;我们通过对象间的相互协作&…

模拟算法【2】

文章目录 &#x1f958;6. N 字形变换&#x1f372;题目&#x1fad5;算法原理&#x1f963;代码实现 &#x1f957;38. 外观数列&#x1f37f;题目&#x1f9c2;算法原理&#x1f9c8;代码实现 &#x1f958;6. N 字形变换 &#x1f372;题目 题目链接&#xff1a;6. N 字形变…

《对话品牌》——诚信铸就品质 创新引领未来

本期节目《对话品牌》栏目组邀请到了东莞市星韵科技有限公司董事长吕玮先生参加栏目录制&#xff0c;分享其企业故事&#xff0c;树立品牌形象&#xff0c;提升品牌价值&#xff01; 节目嘉宾&#xff1a;吕玮 节目主持人&#xff1a;杨楠 节目播出平台&#xff1a;中央新影…

TSINGSEE青犀AI视频智能分析系统的视频接入能力解析

视频智能分析技术是一种先进的人工智能技术&#xff0c;它能够对视频内容进行自动化的分析和理解。这种技术的主要特点包括实时性、自动化、准确性、可解释性等。 1&#xff09;实时性。视频智能分析技术能够在短时间内对大量的视频数据进行快速处理和分析&#xff0c;从而提供…

【笔记】Smali语法

Smali语法 Smali 是一种汇编语言&#xff0c;通常用于 Android 应用程序的反汇编和修改。Smali 代码是 Dalvik 虚拟机指令的文本表示形式。以下是一些常见的 Smali 语法元素&#xff1a; 1. 基本结构: Smali 文件是文本文件&#xff0c;通常以 .smali 扩展名结尾。每个 Smali…

centos7 pgrouting351

安装插件 yum -y install perl(version) perl-Data-Dumper [rootlocalhost build]# perl -vThis is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 44 registered patches, see perl -V for more detail) 源码编译 wget https:/…

焕发图片生机,批量升级gif图片像素,打造高质量图片盛宴!

你是否曾经遇到过需要提高gif图片质量&#xff0c;但手动处理每一张图片又非常耗时且繁琐的情况&#xff1f;如果你觉得处理大量图片会让你感到压力&#xff0c;那么你一定需要我们的批量提高像素工具&#xff01; 第一步&#xff0c;首先我们要进入首助剪辑高手主页面&#x…

「媒体邀约」三农,农业类媒体资源有哪些?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 农业在我国国民经济中的地位是基础&#xff0c;农业是国民经济建设和发展的基础产业&#xff0c;因此围绕三农发展有很多的公司和企业&#xff0c;每年全国都有大大小小关于农业的展览&a…

京东秒杀之秒杀实现

1 登录判断 用户在未登录状态下可以查看商品列别以及秒杀商品详情&#xff0c;但不可以在未登录状态进行秒杀商品的操作&#xff0c;当用户点击开始秒杀时&#xff0c;进行登陆验证 <!DOCTYPE html> <head><title>商品详情</title><meta http-eq…

中兴亮相中国国际现代化铁路技术装备展览会 筑智铁路5G同行

近日&#xff0c;第十六届中国国际现代化铁路技术装备展览会在北京中国国际展览中心举办&#xff0c;中兴以“数智铁路&#xff0c;5G同行”主题亮相本次展览会&#xff0c;并全面展示了“数字铁路网络基础设施”、“云边结合的铁路行业云”、“数字铁路赋能赋智”等方面的最新…