TS学习笔记

一、变量与常量

//1、类型 2、面向对象

//输出语句、

//变量

//声明变量 字母数字下划线 驼峰命名

let personname = "李逍遥001";

var personname1 = "李逍遥002";

personname = "李逍遥003"

document.write(personname +"  "+ personname1);

//常量

const tmp = "haha";

const width:number = 800;

const height = 600;

var str:string = "hhfshf"

二、变量类型

//number,string,boolean,any,array

let tmp:number=777 ;

//undefine

let tmp1:number;

//null

let tmp2 =null;

//单引号和双引号都可以括起来字符串  字符串可以用+号链接起来

document.write(tmp +"");

//字符串换行 /n 是空格  想换行 就用ESC键的按键

document.write(`dfsfssff

  中国

  人

  `);

//打印数字到字符串两种办法 一个是用+号链接字符串或者空串  二是用美元符号加大括号如下

document.write(`这个数字是${tmp}

  `);

//boolean

let bTrue:boolean = true;

//any

let anyType:any = true;

anyType = "dsds";

anyType = 11111;

//数组 类型相同 含义相同

let a: number[]=[1,2,3,4,5];

let b:number = a[3];

//联合类型

let num :string | number = 1111;

num = "error"

三、枚举

//枚举  自己定义一个属于自己的类型

enum Color{

    red,

    blue,

    green

}

enum State{

    idle,

    run,

    death,

    attack

}

//注释

/*

注释

*/

let color:number = Color.green;//0白色 1黑色

let state :number = State.idle;//0 站立 1跑步 2死亡 3攻击

//类型验证  枚举的类型也是number类型

let x = 10;

document.write(typeof x)

//类型别名

type NewNumber = number

let num:NewNumber = 555;

document.write(typeof num)

四、运算符

//运算符

//算数运算符

//+ — * / % ++ --

let num = 10%3;

num = num + 1;

num++;

document.write(num + "");

//先使用在自增

document.write(num++ + "");

//先自增在使用

document.write(++num + "");

//比较运算符> < <= >= ==(可以类型不同) ===(类型和值必须相同)!=(数值不同) !==(类型和值必须不相同)

let res:boolean = 5>3;

res = num ==3;

let num2 = 3;

let num3 = "3";

let res1:boolean = num2 === num3;

document.write(res1 + "");

//逻辑运算符 && || !

res = num >2 && num <10;

res = num >10 || num <2;

res = !res1;

//赋值运算符 = += -= *= /= %=

let c :number = 9;

c += 3;

c = c+3;

五、条件控制语句

//条件控制语句 判断语句

//age > 18

let age =28;

if(age >30){

  document.write("dsdhdlll");

}else{

    document.write("fsfsdfsf");

}

//条件表达式 三目运算符

let num = 105;

num>100?100:num;

//选择语句

enum State{

    idle,

    run,

    attack,

    die

}

let state: State = State.idle;

switch(state){

    case State.idle:

    document.write("空闲");

    break;

    case State.run:

    document.write("跑步");

    break;

    case State.attack:

    document.write("攻击");

    break;

    case State.die:

    document.write("死亡");

    break;

    default:

    document.write("其他");

}

六、循环控制语句

//循环控制语句

//0+1+2+...+100

let i= 0;

let num = 0;

while(i<101){

    if(i%2 == 0){

       num +=i;  

    }    

i++;

}

document.write(num+"");

//至少执行一次

do{

document.write(" do while 循环");

}while(i<0)

let names:string []=["1","2","3"];

let index:number = 0;

while(index<3){

document.write(names[index]);

index++;

}


 

for(let j =0; j <3; j++)

{

   document.write(names[j]);

}

//of 是内容

for(let tmpName of names)

{

   document.write(tmpName);

}

//in 是索引

for(let index1 in names)

{

   document.write(index1);

}

//跳出循环 用break 跳出最近的循环

for(let j0 =0; j0 <3; j0++)

{

    for(let j1 =0; j1 <3; j1++)

    {

        if(j1>2)

      break;

    }

}

七、函数

//输入:参数 输出:返回值

function func(char:string) :void{

    let arr:string[]=['a','b','c','d'];

    for(let i = 0;i<arr.length;i++){

         if(char ==arr[i])

         {

            document.write("当前是第"+i+"个字符。");

         }

    }

}

func('a')

func('b')

func('c')

function add(num1:number,num2:number):number{

let num = num1+num2;

if(num >100){

return 100;

}

return num;

}

let test = add(3,4);

let add2 = function (num1:number,num2:number) : number {

    let num = num1+num2;

    if(num >100){

    return 100;

    }

    return num;

}

add2(4,5);

let add3 =  (num1:number,num2:number) : number => {

    let num = num1+num2;

    if(num >100){

    return 100;

    }

    return num;

}

八、面向对象

//面向过程编程

//说话

function say(name:String,age:number){

document.write("大家好 我叫"+name+",今年"+age);

}

//跑步

function run(name:String,age:number){

document.write(name+"正在跑步");

}

let aName = "a";

let aAge = 20;

let aScore = 80;

say(aName,aAge);

let bName = "b";

let bAge = 30;

let bScore = 90;

run(bName,bAge);

//面向对象编程

//对象

//类 对象

//类:模具,抽象

//对象真实存在的物体

//类和对象是程序员自己定义的

//类中有属性和方法

class Person{

name:string ="moren";

age:number =0;

say(){

    document.write(this.name);

}

}

//实例化对象

let a = new Person();

a.name = "a";

a.age = 15;

a.say();

let b = new Person();

b.name = "b";

b.age = 25;

b.say();



 

九、构造与静态

//类中有属性和方法

//成员属性 成员方法

//静态属性 静态方法

class Person{

    static des:string="这是一个Person类";

name:string ="moren";

age:number =0;

//构造方法

constructor(name:string,age:number){

this.name = name;

this.age = age;

}

static test(){

}

say(){

    document.write(this.name);

}

}

Person.des = "a"

Person.test();

//实例化对象

let a = new Person("a",15);

a.say();

let b = new Person("b",25);

b.say();

十、继承与抽象类

//继承

class Person{

    name:string = "";

    say(){

        document.write("我是人类,叫做"+this.name);

    }

}

class Student extends Person{

num:number = 0;

score:number = 0;

say(){

    super.say();

    document.write("我是学生,叫做"+this.name);

}

}

let a = new Student();

a.name="dddd";

a.say();

//抽象类 本身不能被实例化为对象 可以被继承

abstract class Person1{

    name:string = "";

    run()

    {}

    abstract say1():any;

}

class Student1 extends Person1{

num:number = 0;

score:number = 0;

say1(){

    document.write("我是学生1,叫做"+this.name);

}

}

let a1: Person1 = new Student1();

a1.name= "wangerxiao";

a1.say1();

十一、接口与属性扩展

//接口

class Person{

name:string;

}

interface IWolf{

attack();

}

interface IDog{

eat();

}

class WolfMan extends Person implements IWolf{

attack(){

}

eat(){

}

}

//属性寄存器

class Person1{

_hp:number = 100;

//取值

get hp()

{

return this._hp;

}

//赋值

set hp(value)

{

if(value<0){

this._hp =0;

}else{

this._hp =value;

}

}

}

十二、名称空间

namespace aa{

export class Person{

    name:string = "";

}

}

namespace bb {

  export  class Person{

    age:number = 6;

}

}

let person = new aa.Person();

let personb = new bb.Person();

十三、泛型

//

function add(num:any):any {

    if(typeof num == "number")

    {

        num++;

        return num;

    }

    return num;

}

document.write(add(3)+"");

function add1<T>(num:T):T {

    if(typeof num == "number")

    {

        num++;

        return num;

    }

    return num;

}

document.write(add1<number>(3)+"");

document.write(add1<string>("3")+"");

十四、元组数组字典

//元组

let hero:[string,number]=["chaoren",100];

hero[0] = "ffff";

document.write(hero[0]);

//数组

let array1:number []=[1,2,3];

let array2:Array<number> = new Array<number>();

//长度

document.write(array1.length+"");

//数组后面追加元素

array1.push(4);

//数组前面追加元素

array1.unshift(0);

//删除最后面的元素

array1.pop();

//从第几位删除几个

array1.splice(0,1);

//删除最前面的元素

array1.shift();

//合并两个数组

array1 = array1.concat(array2)

//查找元素位置

let index = array1.indexOf(3);

//排序

array1.sort();

array1.reverse();

document.write(array1+"");

//["a","b","c"] key value 0:"a" 1:"b" 2:"c"

//字典

let dic:{[key:string]:string}={

    "name0":"wangxiaohu",

    "name1":"wangxiaohu1"

}

dic["name3"]="dsdd";

document.write(dic["name3"]);

十五、回调

//函数传参

function func(value:Function){

value("NonNullable");

}


 

function test(name:String){

    document.write("test");

}

func(test);

func(function(name:String){

document.write("test2");

});

func((name:String)=>{

document.write("test3");

});

十六、正则表达式

 

 

 

let reg = /\d{4}-\d{7}/g;

let str = "0345-1234567";

let res = reg.exec(str);

//是否匹配到

document.write(res.length+"");

//匹配到的内容

res.forEach(function(value,index){

document.write(value+" "+index);

});

十七、访问修饰符

//访问修饰符 public 公开的 protectedprotected 受保护的 private 私有的
class Person{
    public name: string;
    public say() {
        
    }
}

class Student extends Person{
    constructor() {
        super();
        this.name;
    }
}
let a = new Person();
a.name = "";
a.say();

十八、单例模式

class SoundManager{
    static Instance = new SoundManager();

    private constructor(){}
}

SoundManager.Instance

class SoundManager1{
    private static instance :SoundManager1;

    private constructor() { }
    static Instance() {
        if (!SoundManager1.instance)
        {
            SoundManager1.instance = new SoundManager1();
        }
        return SoundManager1.instance;
    }
}

SoundManager1.Instance();

十九、代理模式


interface ICalc{
    calc(num1, num2): number;
}

class Npc1 implements ICalc{
    calc(num1, num2) {
        return num1 + num2;
    }
}

class Npc2 implements ICalc{
    calc(num1, num2) {
        return num1 - num2;
    }
}

class Person {
    //代理
    delegate: ICalc;
    Getnum(num1, num2) {
        let num = this.delegate.calc(num1, num2);
        document.write(num +"")
    }
}
let person = new Person();
person.delegate = new Npc1();
person.Getnum(3, 4);
person.delegate = new Npc2();
person.Getnum(3,4);
 

二十、观察者模式


interface IObserver{
    nameChanged(newName);
}

class Person {
    private _name: string;
    //所有观察者
    observers: Array<IObserver> = new Array<IObserver>();


    set name(value) {
        this._name = value;
        //发生变化 
        //遍历观察者数组,给所有观察者发消息
        for (let observer of this.observers){
            observer.nameChanged(this._name);
        }
    }

    get name() {
        return this._name;
    }
}
class Test implements IObserver{
    nameChanged(newName) {
        document.write("监听到变化吗,名字变为"+newName);
    }
}

let person = new Person();
let test = new Test();
//设置为监听对象
person.observers.push(test);

person.name = "haha "

二十一、工厂模式

enum CarType{

    Bmw,

    Audi,

    Benz

}

class Car{

    name:string ="";

    //工厂方法

    static Create(carType:CarType):Car{

    let car :Car;

    switch(carType) {

        case CarType.Audi:

        car = new Audi();

        break;

        case CarType.Bmw:

        car = new Bmw();

        break;

        case CarType.Benz:

        car = new Benz();

        break;

    }

    return car;

    }

}

class Bmw extends Car{}

class Audi extends Car{}

class Benz extends Car{}

let bmw = Car.Create(CarType.Audi);

二十二、链表

​​​​​​​

class Person{

    name:string;

    next:Person;

    constructor(name:string){

    this.name = name;

    }

}

let person = new Person("1111");

person.next = new Person("2222");

person.next.next = new Person("333");

//删除

person.next =person.next.next;

//添加

let tmpPerson = new Person("4444");

tmpPerson.next = person.next;

person.next = tmpPerson;

while(person)

{

document.write(person.name);

//让节点向后移

person = person.next;

}


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

希尔排序——C语言andPython

前言 步骤 代码 C语言 Python 总结 前言 希尔排序&#xff08;Shell Sort&#xff09;是一种改进的插入排序算法&#xff0c;它通过将数组分成多个子序列进行排序&#xff0c;逐步减小子序列的长度&#xff0c;最终完成整个数组的排序。希尔排序的核心思想是通过排序较远距…

【ChatGPT 指令大全】销售怎么借力ChatGPT提高效率

目录 销售演说 电话销售 产出潜在客户清单 销售领域计划 销售培训计划 总结 随着人工智能技术的不断进步&#xff0c;我们现在有机会利用ChatGPT这样的智能助手来改进我们的销售工作。在接下来的时间里&#xff0c;我将为大家介绍如何运用ChatGPT提高销售效率并取得更好的…

苹果电脑图像元数据编辑器:MetaImage for Mac

MetaImage for Mac是一款功能强大的照片元数据编辑器&#xff0c;它可以帮助用户编辑并管理照片的元数据信息&#xff0c;包括基本信息和扩展信息。用户可以根据需要进行批量处理&#xff0c;方便快捷地管理大量照片。 MetaImage for Mac还提供了多种导入和导出格式&#xff0…

多用户跨境电商商品库系统快速搭建(全开源)

搭建一个多用户跨境电商商品库系统需要以下步骤&#xff1a; 1. 确定系统需求&#xff1a;首先&#xff0c;需要明确系统的功能需求&#xff0c;包括商品管理、订单管理、用户管理、支付管理等。根据具体需求确定系统的功能和界面设计。 2. 确定技术栈&#xff1a;选择合适的…

超融合基础架构 (HCI) 监控

什么是超融合基础架构 &#xff08;HCI&#xff09; 超融合基础架构 &#xff08;HCI&#xff09; 是一种软件定义的基础架构技术&#xff0c;它将计算、虚拟化和网络功能全部整合到一个设备中。超融合基础架构 &#xff08;HCI&#xff09; 解决方案使用软件和 x86 服务器来取…

【多维定向滤波器组和表面波】表面变换:用于高效表示多维 s 的多分辨率变换(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【校招VIP】java语言考点之static和并发

考点介绍&#xff1a; static考点是面试的高频考点&#xff0c;很多同学不理解使用场景&#xff0c;只是从加载出发。 一般从容易到难提问&#xff0c;比如从static的含义和理解、到JVM的存储或者到线程安全性&#xff0c;再到单例模式等。 java语言考点之static和并发 相关题…

本质矩阵E、基本矩阵F、单应矩阵H

1. E (归一化坐标对进行计算) t ^ R 为3*3的矩阵, 因为R,t共有6个自由度&#xff0c;又因为单目尺度等价性&#xff0c;所以实际上E矩阵共有5个自由度。因此至少需要5个点对来求解。 2. 基本矩阵F:根据两帧间匹配的像素点对儿计算 3*3且自由度为7的矩阵kF也为基础矩阵&#x…

c语言——三子棋

基本框架 三个文件: 其中.cpp文件用于游戏具体函数设计&#xff0c;.h文件为游戏的函数声明&#xff0c;test.cpp文件用于测试游戏运行。 需要用到的头文件&#xff1a; #include <stdio.h> #include <stdlib.h>//rand&srand #include <time.h>//时间相…

【BASH】回顾与知识点梳理(十四)

【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限&#xff1a;umaskumask 的利用与重要性&#xff1a;专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限&#xff1a; SUID, SGID, SBI…

《剑指offer》(6)其他算法

先计算下三角&#xff0c;再遍历一次计算上三角。 class Solution: def multiply(self , A: List[int]) -> List[int]: #长度判断 n len(A) if n < 1: return [] B [1]*n #计算乘矩阵的下三角&#xff0c;B中的每一个数都是A的前一个数和B的前一个数相乘 for i in ran…

Linux系统中的自旋锁(两幅图清晰说明)

总结&#xff1a; 多CPU下的自旋锁采取的是忙等待&#xff08;原地打转&#xff09;机制&#xff0c;虽然忙等待的线程占用了它所在的cpu&#xff0c;但其他线程仍可放到其他CPU上执行。所以自旋锁上锁和解锁之间的临界区代码要尽量的短&#xff0c;最好不要超过5行&#xff0c…

【Linux拓展】ncurses库的安装和使用 {ncurses库的安装方法,ncurses库的使用手册,基于终端的贪吃蛇游戏}

一、简介 ncurses库是一个用于创建基于终端的交互式应用程序的库。它提供了一套API&#xff0c;用于处理终端界面的输入和输出&#xff0c;以及控制终端的光标位置、颜色、窗口等。 使用ncurses库&#xff0c;您可以在终端中创建复杂的文本界面&#xff0c;包括窗口、菜单、按…

能化校对软件:提高招标文件质量的创新解决方案

智能化校对软件是一种创新的解决方案&#xff0c;可以进一步提高招标文件的质量和准确性。 以下是一些智能化校对软件的创新功能和优势&#xff1a; 1.自然语言处理(NLP)技术&#xff1a;智能化校对软件利用NLP技术来理解和分析文本&#xff0c;识别和纠正更复杂的语法和语义错…

chapter14:springboot与安全

Spring Boot与安全视频 Spring Security, shiro等安全框架。主要功能是”认证“和”授权“&#xff0c;或者说是访问控制。 认证&#xff08;Authentication&#xff09;是建立在一个声明主体的过程&#xff08;一个主体一般指用户&#xff0c;设备或一些可以在你的应用程序中…

集合工具类 Collections:提升集合操作效率

文章目录 多元素添加&#xff1a;addAll 方法随机置换&#xff1a;shuffle 方法自定义对象排序&#xff1a;sort 方法总结 在Java的集合框架中&#xff0c;Collections 是一个包含了许多操作集合的静态方法的工具类。通过使用 Collections 类提供的方法&#xff0c;我们能够更加…

利用 3D 地理空间数据实现Cesium的沉浸式环境

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 为了将大量异构 3D 地理空间数据处理和分散到各行各业的地理空间应用程序和运行时引擎&#xff0c;Cesium 创建了 3D Tiles&#xff0c;这是一种用于高效流式传输和渲染大量异构数据集的开放标准。3D Tile…

CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数

一、淘金优化算法GRO 淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;由Kamran Zolf于2023年提出&#xff0c;其灵感来自淘金热&#xff0c;模拟淘金者进行黄金勘探行为。淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;提…

尚硅谷大数据项目《在线教育之采集系统》笔记004

视频地址&#xff1a;尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P047 P048 P049 P050 P051 P052 P053 P054 P055 P056 P047 /opt/module/datax/job/base_province.json [atguigunode001 ~]$ hadoop fs -mkdir /base_province/2022-02-22 [atgu…

干货 | 详述 Elasticsearch 向量检索发展史

1. 引言 向量检索已经成为现代搜索和推荐系统的核心组件。 通过将复杂的对象&#xff08;例如文本、图像或声音&#xff09;转换为数值向量&#xff0c;并在多维空间中进行相似性搜索&#xff0c;它能够实现高效的查询匹配和推荐。 图片来自&#xff1a;向量数据库技术鉴赏【上…