TS+VScode中的git操作+原型原型链

209 阅读6分钟

TS的基本用法

安装TS

Node和浏览器不能直接运行TS,需要把TS转化成JS

  • 实现TS向JS的转变
1. npm i typescript -g     #全局安装TS

2. tsc -v      #查看版本

3. tsc index.ts   #编译ts文件生成js文件

4. node index.js  #执行js代码
  • 简化运行TS步骤 ts-node可以编译和执行ts文件
1. npm i -g ts-node     #全局安装ts-node包

2. ts-node index.ts      #将ts转化为js,然后运行js代码

TS基础类型

原始类型

number,string,boolean,undefined,null,symbol

冒号后面的内容叫:类型注解

let username: string = "张老师";
let age: number = 24;
let off:boolean = true;

数组类型

let arr: string[] = ['1'];
let arr1: (string | number | null | boolean)[] = [true, null, 2, 'wo', 1, 2, 3, 'uihguih'];
let arr2: [number, string] = [1, '1'];

元组

let position: [number,number] = [1,2]
  • 元组可以指定长度,类型

对象类型

let obj:{name:string,age:number}={name:'张三',age:22};
let obj2:{name:string,age:number}={name:'李四',age:24};

类型别名

相同的类型能重复使用

type my = { name: string; age: number };
type my1 = { name: string; age: number ;friends:my};
let obj: my = { name: '张三', age: 24 };
let obj1: my = { name: '李四', age: 28 };
let obj2:my1={name: '李四', age: 28,friends:{ name: '王五', age: 30 }};

函数类型

  • 给函数添加类型实际给参数和返回值添加类型
//普通函数
function fn (num1:number,num2:number):number{
    return num1+num2
}

//箭头函数
const fn1=(num1:number,num2:number):number => {
    return num1+num2
}

//同时指定参数和返回值类型
const fn3:(num1:number,num2:number)=>number=(num1,num2)=>{
    return num1+num2
}

//void类型,没有返回值
const fn4=function (username:string):void{
    console.log('hello'+username);
}

//可选参数
function myslice(start?:number,end?:number){
    console.log('起始索引',start,'索引结束',end);
}
myslice()
myslice(10)
myslice(10,20)

VScode中git的操作

  1. 克隆项目

Snipaste_2023-02-15_16-35-44.png

  1. 添加到暂存区

Snipaste_2023-02-15_16-38-44.png

  1. 添加本地仓库

Snipaste_2023-02-15_16-40-27.png

  1. 提交到远程仓库

Snipaste_2023-02-15_16-41-37.png

git stash是什么?

image.png stash,译为存放,在 git 中,可以理解为保存当前工作进度,会把暂存区和工作区的改动进行保存,这些修改会保存在一个栈上

后续你可以在任何时候任何分支重新将某次的修改推出来,重新应用这些更改的代码 默认情况下,git stash会缓存下列状态的文件:

  • 添加到暂存区的修改(staged changes)
  • Git 跟踪的但并未添加到暂存区的修改(unstaged changes)

但以下状态的文件不会缓存:

  • 在工作目录中新的文件(untracked files)
  • 被忽略的文件(ignored files)

如果想要上述的文件都被缓存,可以使用-u或者--include-untracked可以工作目录新的文件,使用-a或者--all命令可以当前目录下的所有修改

如何使用?

关于git stash常见的命令如下:

  • git stash
  • git stash save
  • git stash list
  • git stash pop
  • git stash apply
  • git stash show
  • git stash drop
  • git stash clear

#git stash

保存当前工作进度,会把暂存区和工作区的改动保存起来

#git stash save

git stash save可以用于存储修改.并且将git的工作状态切回到HEAD也就是上一次合法提交上

如果给定具体的文件路径,git stash只会处理路径下的文件.其他的文件不会被存储,其存在一些参数:

  • --keep-index 或者 -k 只会存储为加入 git 管理的文件
  • --include-untracked 为追踪的文件也会被缓存,当前的工作空间会被恢复为完全清空的状态
  • -a 或者 --all 命令可以当前目录下的所有修改,包括被 git 忽略的文件

#git stash list

显示保存进度的列表。也就意味着,git stash命令可以多次执行,当多次使用git stash命令后,栈里会充满未提交的代码,如下:

其中,stash@{0}stash@{1}就是当前stash的名称

#git stash pop

git stash pop 从栈中读取最近一次保存的内容,也就是栈顶的stash会恢复到工作区

也可以通过 git stash pop + stash名字执行恢复哪个stash恢复到当前目录

如果从stash中恢复的内容和当前目录中的内容发生了冲突,则需要手动修复冲突或者创建新的分支来解决冲突

#git stash apply

将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除

也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况

同样,可以通过git stash apply + stash名字执行恢复哪个stash恢复到当前目录

#git stash show

查看堆栈中最新保存的stash和当前目录的差异

通过使用git stash show -p查看详细的不同

通过使用git stash show stash@{1}查看指定的stash和当前目录差异

#git stash drop

git stash drop + stash名称表示从堆栈中移除某个指定的 stash

#git stash clear

删除所有存储的进度

应用场景

当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支或者拉下远端的代码去做一点别的事情

但是你创建一次未完成的代码的commit提交,这时候就可以使用git stash

例如以下场景:

当你的开发进行到一半,但是代码还不想进行提交 ,然后需要同步去关联远端代码时.如果你本地的代码和远端代码没有冲突时,可以直接通过git pull解决

但是如果可能发生冲突怎么办.直接git pull会拒绝覆盖当前的修改,这时候就可以依次使用下述的命令:

  • git stash
  • git pull
  • git stash pop

或者当你开发到一半,现在要修改别的分支问题的时候,你也可以使用git stash缓存当前区域的代码

  • git stash:保存开发到一半的代码
  • git commit -m '修改问题'
  • git stash pop:将代码追加到最新的提交之后

原型原型链

  • 原型

显式原型prototype构造函数都有显式原型 在原型上放的就是能够被所有的实例化对象所共享的属性和方法

隐式原型proto每一个实例都有隐式原型 指向的就是构造函数的显式原型

constructor这个单词本事是构造函数的意思,每一个prototype上都有一个constructor,指向构造函数本身

  • 原型链

原型对象也可能拥有原型,并从中继承⽅法和属性,⼀层⼀层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何⼀个对象会拥有定义在其他对象中的属性和⽅法 自己有就用自己的 自己没有就用继承的 最终会找到 Object

原型原型链.png