Visual Studio Code上传gitee流程
首先新建一个空文件夹
创建一个空的html文件
拉进Visual Studio Code里点击克隆
克隆远程仓库地址
克隆成功,在新的页面编写代码提交
进入当前页面对修改完成的代码进行提交步骤
点击加号进入暂存更改页面,进行代码更改前和更改后代码对比
点击提交
进入备注页面
保存成功后关闭页面
点击同步更改上传至远程仓库
远程仓库更新成功
git stash
git stash
能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
在文件内打开git bash here
输入git add .将开发中的代码上传至暂缓区
当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
当前正在开发的项目
使用git stash 将正在开发的项目保存在堆栈中
开发中的代码已被存储在堆栈中
开始编写紧急修复的bug代码
修复已完成进行git 小黑框输入git add .将修复完成的代码进行提交
提交完成输入git stash pop 指令(git stash pop:将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。该命令将堆栈中最近保存的内容删除(栈是先进后出))
完成之后会有冲突将以下删除
在git 小黑框 进行git add . git commit -m"" git push
以上是git stash 全部过程
原型链
原型链通俗易懂的理解就是可以把它想象成一个链条,互相连接构成一整串链子! 而原型链中就是实例对象和原型对象之间的链接。每个函数都有一个prototype属性,这个prototype属性就是我们的原型对象,我们拿这个函数通过new构造函数创建出来的实例对象,这个实例对象自己会有一个指针(proto)指向他的构造函数的原型对象!这样构造函数和实例对象之间就通过( proto )连接在一起形成了一条链子。
原型链的特点
就近原则,当我们要使用一个值时,程序会优先查找离自己最近的,也就是本身有没有,如果自己没有,他就会沿着原型链向上查找,如果还没有找到,它还会沿着原型链继续向上查找,找到到达Object
引用类型,当我们使用或者修改原型链上的值时,其实使用的是同一个值!
JS中每个函数都存在原型对象属性prototype。并且所有函数的默认原型都是Object的实例。
每个继承父函数的实例对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。
原型链工作图
TypeScript
什么是TypeScript
- 简称 ts,是微软开发的一种静态的编程语言,它是 JavaScript 的超集。
- js 有的 ts 都有
- type+javascript
TypeScript安装
node和浏览器不能直接运行TS,需要把TS转化为JS
- 实现TypeScript向JavaScript转变
npm i typescript -g //全局安装 TypeScript
tsc -v //查看ts版本
tsc hello.ts //编译ts文件:生成js文件
node hello.js执行js代码
- 简化运行TS步骤
npm i -g ts-node //安装ts-node包
ts-node hello.ts //将TS转化为JS,然后运行JS代码
tsconfig.json
运行tsc xxx.ts命令时候,会自动把ts文件编译成js文件
{
" compilerOptions":{
"watch" :true,//只要代码改动,则自动刷新
"removeComments " :true,//移除注释,
}
}
ts 和 js 有什么区别
代码先编译后执行
- TypeScript:静态类型语言,在编译期做类型检查。代码在编译(执行前)就发现错误。
- JavaScript:动态型语言,在执行期做类型检查。代码真正执行的时候去发现错误
TS基本类型
原始类型
number,string,boolean,undefined,null,symbol
冒号后面的内容:类型注释
let username : string ="张老师";
let age: number = 21;
let isLoading: boolean = true;
let a: nul1 = null;
let b: undefined = undefined;
let c: symbol = symbol( );
数组类型
//数组类型
let arr: string[] = ["憨憨","笨笨","蛋蛋"]
//联合类型
let arr1:(string | number)[]=["秀哇",100]
类型别名
相同的类型反复使用
type myType = {name:string,age:number}
let obj:myType = {name:'老六',age:20}
let obj1:myType = {name:'小七',age:18}
let obj2:myType = {name:'老八',age:26}
let obj3:myType = {name:'小九',age:17}
函数类型
函数涉及的类型实际上指的是:函数参数和返回值的类型
// 普通函数
function 函数名(形参1: 类型=默认值, 形参2:类型=默认值,...): 返回值类型 { }
// 声明式实际写法:
function add(num1: number, num2: number): number {
return num1 + num2
}
// 箭头函数
const 函数名(形参1: 类型=默认值, 形参2:类型=默认值, ...):返回值类型 => { }
const add2 = (a: number =100, b: number = 100): number =>{
return a + b
}
// 注意: 箭头函数的返回值类型要写在参数小括号的后面
add(1,'1') // 报错
对象类型
// 创建类型别名
type Person = {
name: string,
age: number
sayHi(): void
}
// 使用类型别名作为对象的类型:
let person: Person = {
name: '憨憨',
age: 18
sayHi() {}
}
元组
元组是另一种类型的数组,是明确元素数量和类型的数组
let arr3:[number,string] = [1000,'哈哈哈']