ts之基本类型,联合类型,函数,类的概念

1.ts中基础类型

数字 字符串 布尔 数组 元组 any never void null undefined 枚举

1.最基础的就是数字 字符串 布尔

number 和 大Number的区别 js特性 装箱的概念 xxx.xxx,string,boolean同理

let num1: number = 1;
let num2: Number = 1; // 用来描述实例的 类也可以当做类型
let num3: number = Number(1)
let num4: Number = new Number(1);

元组 ts中自己实现的 内容固定 类型固定

const tuple: [string, boolean, number] = ['a', true, 1];

枚举类型 ts最终编译成js 是没有类型的, 只是在开发时候使用的

const enum ROLE { // 大写是规范  加上const后 不会生成一个对象(更简洁)USER,ADMIN = 5,MANAGER
}

void表示函数返回值的 也可以描述变量 void的值只能赋予null和undefined

接口中定义类中原型方法的void 表示不关心返回值类型,在实现的时候可以在次确定类型,函数是确定死了

function getVoid(): void { return 
}

2.ts中的联合类型在这里插入代码片

联合类型 如果不进行初始化操作 必须要给类型 否则都是any

let numOrStr: string | number;
numOrStr = 'abc';
numOrStr = 123;

如果类型过于复杂,我希望后续复用 我们可以把类型单独提取出来

type IType = 'a' | 'b' | 'c' | 'd'; // 类型别名
let type: IType = 'b'
let typ2: IType = 'c'

3.ts中的函数

函数 对函数增加类型 对函数的参数进行类型校验 对函数的返回值进行类型检验,也可以对函数本身来校验

函数关键字 写完后会对当前函数自动推断类型

function sum1(x: number, y: string): string { // 函数 括号后面的是返回值类型return x + y;
}

1.可以自动根据当前等号右边的内容 推断左边的类型
2.我们可以指定类型 赋予一个可以兼容这个类型的函数
3.函数会自动推倒返回值类型

type IFn = (a: number, b: number) => number
type IFn1 = (a:number,b:number) => number
const sum2:IFn  = (x: number, y: number) => { // 我发现这个函数兼容指定的类型 即可赋值return x + y
}
sum2(1, 2);

? 表示参数可以传递或者不传递,但是y的类型 可以是number | undefined

const sum3 = (x: number, y?: number, ...args: number[]): number => {return x + (y as number);
}sum3(123, 1, 2, 3, 4);

4.ts中类的概念

实例属性、方法 new xxx来调用,静态属性、方法 就是通过类.xxx , 原型属性和方法

class Pointer {public x:number public y:number  // 声明的变量会被增加到实例上// 传入的实例直接就放在实例上,无需再次声明  constructor(public x:number,public y:number){ // 在constructor中的操作都是初始化操作this.x = x;this.y = y;}
}
let pointer = new Pointer(100,100)
//实例属性的属性和方法调用
console.log(pointer.y,pointer.x)

属性修饰符

  1. public 是属性修饰符 public 表示自己 和 子类 和子类之外都可以访问到
  2. protected 只有自己和 自己的后辈能访问
  3. private 就是只有自己能访问的属性

我们可以给构造函数添加修饰符 如果被标识成 protected 说明不能被new 了, 如果表示成 private 说明不能继承了,同时也不能被new

readonly 仅读 (const) 如果在初始化完毕后不能在修改了 如果是对象可以更改属性

class Animal {public readonly n: number = 1//被protected 修饰,不能在被new了,只能被继承protected constructor(public name: string, public age: number) {console.log(this.name)}static type = '哺乳动物'; // 静态属性 es7语法static get type1(){ // 属性访问器  es6的写法return '哺乳动物'}static getName() {return '动物'}say() {console.log('父 ')}
}

静态方法可以被继承super 默认在构造函数中和静态方法中都指向自己的父类, 在原型方法中super指向父类的原型

class Cat extends Animal {constructor(name: string, age: number, public readonly address: string) {super(name, age); // Animal.call(this,name,age)console.log(this.name)}static type = '猫科动物';static getName() {console.log(super.getName())return '猫'}say() { // 原型方法中的super指向的是父类的原型super.say()}private str: string = '';get content() {return this.str}set content(newVal: string) {this.str = newVal}
}

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

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

相关文章

精通并发【基础四】:创建线程的几种方式

在 Java 中,多线程编程是一种常见且强大的编程范式,它允许程序同时执行多个任务。创建线程是多线程编程的基础,Java 提供了几种不同的方法来创建和启动线程。本文将介绍三种常用的创建线程的方法:继承 Thread 类、实现 Runnable 接…

[Leetcode笔记] 动态规划相关

前言 写题目写到了一些和动态规划相关的内容,所以在这里记录一下 LCR 089 题解思路 总的来说,就是用一个数组去存储当前的最优解,然后从0开始一路向上顺推过去,求得最后一位的最优解。 class Solution { public:int rob(vect…

MT3016 竹鼠通讯

在真空中,一块无限平坦光滑绝缘不导热草地上有很多光滑且相同球形竹鼠,它们的坐标为(xi​,yi​)。竹鼠之间会通过脑电波联系彼此。现在请问相距最近两只竹鼠的直线距离分别是多少(所有竹鼠都在草地的第一象…

检测头篇 | 利用RT-DETR模型的检测头去替换YOLOv8中的检测头

前言:Hello大家好,我是小哥谈。RT-DETR号称是打败YOLO的检测模型,其作为一种基于Transformer的检测方法,相较于传统的基于卷积的检测方法,提供了更为全面和深入的特征理解,将RT-DETR检测头融入YOLOv8,我们可以结合YOLO的实时检测能力和RT-DETR的深度特征理解能力,打造出…

VLAN基础讲解+不同VLAN间通信(实验)

第一章 VLAN基础 1.1 什么是VLAN 随着网络中计算机的数量越来越多,传统的以太网络开始面临广播泛滥以及安全性无法保证等各种问题。 VLAN即虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的技术。通过在交换机上配置VLAN&a…

基于深度学习的吸烟检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要:本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的吸烟行为检测系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及…

从0配置React

在本地安装和配置React项目,您可以使用create-react-app这个官方推荐的脚手架工具。以下是安装React的步骤,包括安装Node.js、使用create-react-app创建React应用,以及启动开发服务器。 下载安装node.js运行以下命令,验证Node.js…

【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt 开发环境的搭建 | Qt 安装教程 文章编号:Qt 学习笔记 /…

外贸建站:WordPress搭建外贸独立站零基础自建站完整教程(2024)

对于做外贸来说,拥有自己的外贸独立网站真的非常重要。在外贸领域,如今各平台竞争激烈,规则多,成本高,价格战、政策变化快,还存在封店风险等等因素。在这种情况下,拥有外贸独立站就能很好规避上…

攻防世界[EASYHOOK]

阅读须知: 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失,均由使用者 本人负责,作者不为此承担任何责任,如…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文:STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写, 为什么:当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时,其实就是将对应的该引脚的寄存器地…

关于一篇知乎答案的重现

〇、前言 早上在逛知乎的时候,瞥见了一篇答案:如何通俗解释Docker是什么?感觉很不错,然后就耐着性子看了下,并重现了作者的整个过程。但是并不顺利,记载一下这些坑。嫌麻烦的话可以直接clone 研究&#xf…

Xxxxxx

数据库 1,B树与B树区别 1,B树每个节点存ID与其他数据字段,B非叶子结点,只存ID,叶子结点存完整数据 好处:每个层级B树,可以存储更多的额数据,层级更少,更扁平&#xff…

Makefile:条件判断和循环的使用(十)

1、条件判断 ifeq:if equal的缩写,判断是否相等,相等返回true,不相等返回falseifneq:if not equal的缩写,判断是否不相等,不相等返回true,相等返回falseifdef:if defini…

【语义分割实战(1)】U-Net语义分割:训练自己的数据集

一、U-Net图像语义分割原理 UNet最早发表在2015的MICCAI会议上,4年多的时间,论文引用量已经达到了9700多次。 UNet成为了大多做医疗影像语义分割任务的baseline,同时也启发了大量研究者对于U型网络结构的研究,发表了一批基于UNet…

24. AUTOSAR MCAL分析(三)--Crypto Driver(1)

目录 1. Crypto Driver概述 2. 认识Crypto Driver Object 2.1 EB对CDO的实现 2.2 Vector对CDO的实现 2.3 小结 <

Java中线程详解

文章目录 相关概念多线程概念实现方式继承Thread类实现Runnable接口比较 常用方法线程安全产生的原因解决思想同步同步代码块同步方法Lock锁机制 死锁概念避免 状态线程间的通讯介绍方法 相关概念 并行&#xff1a;在同一时刻&#xff0c;有多个任务在多个CPU上同时执行并发&a…

抖店新手从0-1起店教程:新手开抖店别乱操作!这才是正确流程!

哈喽~我是电商月月 新手开抖店为什么不好成功&#xff0c;那是因为你没接触过电商&#xff0c;不懂其中的步骤&#xff0c;一些细节没处理好&#xff0c;开店就已经注定失败&#xff01; 废话不多说&#xff0c;直接入正题 一&#xff0e;开店&#xff0c;入驻抖店 1&#…

韩顺平 | 零基础快速学Python

环境准备 开发工具&#xff1a;IDLE、Pycharm、Sublime Text、Eric 、文本编辑器&#xff08;记事本/editplus/notepad&#xff09; Python特点&#xff1a;既支持面向过程OOP、也支持面向对象编程&#xff1b;具有解释性&#xff0c;不需要编程二进制代码&#xff0c;可以直…

算法沉淀——动态规划篇(子数组系列问题(上))

算法沉淀——动态规划篇&#xff08;子数组系列问题&#xff08;上&#xff09;&#xff09; 前言一、最大子数组和二、环形子数组的最大和三、乘积最大子数组四、乘积为正数的最长子数组长度 前言 几乎所有的动态规划问题大致可分为以下5个步骤&#xff0c;后续所有问题分析都…