这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
动态类型语言和静态类型语言
动态:JavaScript、ruby、python运行的时候自动检查转化,运行的时候才会发现问题
静态:c++、c、java
学什么东西要想对自己技术有什么提高
使用typescrip的优点:
- 程序更容易理解,动态类型需要运行时调试知道来龙去脉
- 效率更高(文档提示,代码补全
- 不存在的方法直接提示
- 完全兼容JavaScript
缺点:
- 增加学习成本
- 短期内增加开发成本(但是对长期大型项目很重要
原始数据类型
undefined 和 null的区别
都是所有类型的子类型
any 就是任意类型都可以
如果明确类型那还是写好比较好,不然就丢失类型检查的作用了,这样就和JavaScript一样了
数组
数组将同一类型的东西聚合在一起
元组
数组写法:let arrayOfNumbers: number[] = [1,2,3]
元组写法: let user :[string, number] = ['lhj', 20] 限定数据类型的数组
interface 接口
- 对对象形状(shape)进行描述
- Duck Typing (鸭子类型)
例子:
interface Person{
name: string;
age: int;
}
如果是age?:意思就是可选可不选这个
readonly 只读属性
参数
function add(x:number, y:number):number{
return ....
}
函数表达式写法:
const add = (...) =>{
}
这里输入输出有类型,包括函数本身也是有类型的
也可以把这个类型赋给一个string,记住凡是在:后面的都是在声明类型
写法:
let add2: (x: number, y: number, z?: number) => number = add
这里的箭头不是箭头函数,就是类型部分
也可以用interface写
类型推论联合类型和类型断言
联合类型:
let numberOrString: number | string
如果直接访问方法的话是访问的共有属性
类型断言:
告诉编译器自己比它更了解这个类型,你小子没法判断代码,但是我很清楚
类型断言不是类型转换,写成里面不存在的会报错
枚举
常量
一周,上下左右方位...
泛型
泛型是怎样出现的?
定义函数、接口或类的时候,先不指定具体类型,在使用的时候再指定类型
例子:
function echo<T>(arg:T):T{
return arg
}
const result = echo('str')
这样就会根据传入的自动对应
只要叫起来像鸭子,就都可以拿来用 extends的妙用
只要包括extends里面的就不会报错
泛型在类上面的使用
泛型蛮重要!
类型别名
type =
字面量
什么时候使用type什么时候使用interface
安装声明文件:上typescript官网查找
type文件夹里面 模块
ts配置
配置选项
vue 3
使用volar插件,就要defineComponent
Eslint
规范的代码格式提高工作效率
要把规矩列出来,写在文件里
开源的JavaScript
.eslintrc:
-
extends
比较出名的组织弄的一系列的规则,可以直接使用
-
rules
针对特定规则进行修改:0 1 2
computed属性接受一个函数
特别注意模板中引用的是不是响应式对象
vue3 最重要的内容
loading 加载中
-
axios
get方法,then得到返回的结果进行处理,catch可以获取错误
-
suspense
-
async await
-
Project/Inject