TS
变量声明
var
let
const
解构复制
对象解构
const {a, b} = {a: 'name', b: 'age'};//普通解构赋值
const {a: age, b} = {a: 'name', b: 'age'};// 解构赋值 属性重命名
let {a, b}:{ a: string, b: string } = {a: 'name', b: 'age'};//解构赋值,且声明类型
类型推断
ts根据右边的数据会推断类型
接口
interface 关键字
interface Person {
name: string;
}
可选属性
interface Person {
name: string;
age?: string;
}
只读属性
interface Person {
readonly name: string;
}
readonly vs const
最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用const,若做为属性则使用readonly。
任意属性
interface Person {
[name:string]: string;
}
// 这里有个特殊情况
interface Person {
name: string;
[propName: string]: number;
}// 这样声明会报错 即 [propName: string]是匹配name的,但是name的值为string,而[propName: string]是number,所以会报错
函数类型
interface Person {
(x: number, y: number): number;
}
const tom: Person = function (a,b): number {
return 2;
};
// 这里的参数可以不和x,y相同,也可不指定类型,因为ts会自动推断,但是传值的类型必须和x,y的类型一致
可索引类型
interface Perosn {
[index: number]: any; 理解为数组
或
[index: string]: any;理解为对象
}
index共支持两种类型 index number,可以同时使用两种类型的索引,但是数字索引的返回值必须是字符串索引返回值类型的子类型。 这是因为当使用 number来索引时,JavaScript会将它转换成string然后再去索引对象。 也就是说用 100(一个number)去索引等同于使用”100”(一个string)去索引,因此两者需要保持一致
例如:
interface Person {
name: string;
}
interface Tom extends Person {
age: number;
}
interface PeopleList {
[indexe: string]: Person;
[index: number]: Tom;
}
const p: Person = {
name: 'tom',
};
const t: Tom = {
name: 'tom',
age: 23,
};
const pl: PeopleList = {
h: p,
2: t,
};
类JAVA接口,用于类实现
interface Person {
name: string;
say(name: string, age: number): any;
}
class Tom implements Person {
name = 'tom';
age = 26;
constructor(){
}
say(name: string, age: number) {
return name + age.toString();
}
}
当使用class实现interface的时候,在constructor内部实现该接口时,会报错,这是因为类分为静态部分和实例部分而constructor属于静态部分,实现时并不会检查静态部分
操作静态部分
继承
可以继承接口
接口继承类
接口继承类,但不会去实现类
class Do {
public name: string = 'yzm';
private action(): string {
return this.name;
}
}
interface Person extends Do {}
// 当类实现的接口是集成其他的类,且其他的类含有private protected方法或属性,则此时子类继承父类才能实现该接口,否则会报错
如下,会报错 应为 class DD extends Do implements Person{}
class DD implements Person {
public name = 'hello word';
public action(): string {
return 'hello word';
}
}
Linux 命令
ps
进程查看器
linux上进程有5种状态:
运行(正在运行或在运行队列中等待)
中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
停止(进程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
常用参数
a 显示所有进程
-a 显示同一终端下的所有程序
aux 显示所有包含其他使用者的进程
u 指定用户的所有进程
组合使用
ps aux | grep node #查看所有含有node的进程
free
free # 查看内存使用情况
crontab
固定时间间隔执行命令或脚本
crontab [-u user] file [ -e | -l | -r ]
-u user:用来设定某个用户的crontab服务;
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示
谷歌浏览器
内存查看
谷歌任务管理器查看
Shift + ESC
Profiles查看
F12打开开发者工具
打开Memory选项卡
通过该工具可以详细查看内存和对比内存使用情况 用 Chrome 开发者工具分析 javascript 的内存回收