-
泛型类型写法:
1、<T>(arg1:T,arg2:T) => T
2、{<T>(arg1:T,arg2:T) : T}
let addFuc:<T>(arg1:T,arg2:T) => T
简化泛型类型,方便引用使用interface
interface GenAdder {<T>(arg1:T,arg2:T) : T}
let addFuc:GenAdder
调用函数
addFunc<number>(1,2);
interface GenAdder<T> {(arg1:T,arg2:T) : T}
let addFuc:GenAdder<number>
调用函数
addFunc<(1,2);
查看全部 -
原始函数
function add(arg1:number,arg2:number):number{
return rag1+rag2
}
ts 泛型
function add<T>(arg1:T, arg2:T):T{
return arg1 + arg2
}
函数调用
add<number>(1,2);
add<string>('aa','bb');
查看全部 -
ts target配置 经过typescript的编译后生成什么版本的js代码,通常设置橙es5
查看全部 -
ts noImplicitAny 设置为true时表示不允许出现隐式any类型。
设置为false时表示允许出现隐式any类型。
解决变量隐式类型的方法式在变量定义的时候就给变量赋值。代码如下:
const key = "name"
const student = {
[key] : 'zhangsan'
}
查看全部 -
ts 配置esModleInterRop 值设置为true的时候,当导出不含default是会自动加上default。使用场景module.exports={},设置为true时 相当于modele.exports.default = {}
查看全部 -
ts jsx配置
三个值:preserve | reacr-native | react
preserve 输出文件扩展名.jsx
查看全部 -
ts moduleresolution 配置项有两个值node和classic,两个值的区别主要是查找路径不同 配置是node时,默认是去node_modules文件下查找引用文件 配置是classic时,现在外层查找引用文件,找不到时去node_modules目录下查找(主要是兼容老项目)。两个配置如果都找不到会去上层目录查找,直到根目录
查看全部 -
#### 动画1秒60帧
人眼中,如果1秒内有60帧,那么动画看起来流畅,否则就卡顿。这样算起来,一帧就是12毫秒。
#### Stack - 16版本之前的渲染模式
主要特点,等等整个虚拟树完成了比较后,再统一渲染,如果渲染节点巨大,虚拟树比较的工作可能会超过12毫秒,此时会出现卡顿现象。
#### Fiber - 16版本的渲染模式
主要特点,将整个虚拟数的比对拆分成很多个小任务,每个小任务的完成时间控制在一帧12毫秒内,每个小任务完成后都会完成一次渲染(小任务对应的局部渲染)。
因为每次渲染都控制在一帧以内,不用等所有任务或整个树比对完后才渲染,所有看起来流畅,不卡顿。
查看全部 -
### 两种使用范型接口的方式
#### 函数调用时声明T类型
```ts
// interface GenAdder {<T>(arg1:T,arg2:T):T};
// let addFunc : GenAdder;
// addFunc = add;
// // 函数调用时定义好T类型
// addFunc<number>(1,2)
```
#### 在ts类型声明时设置好T类型
我们也可以将上面的T从花括号后,提取出来,放在GenAdder后;
**这种定义方式,就要求在使用接口时,必须在接口后定义好`<类型>`**,
可以理解为,不同的范型接口定义方式,决定了使用范型时的方式与规范。
也可以理解为,定义接口时,若接口后紧挨着一个`<T>`,则使用此接口时,必须是 `接口名<T>`;
若接口后是干干净净的,没有任何其他东西,则使用此接口时,应该为单纯的 `接口名`
```ts
// 将T提出来,紧挨接口名之后
// interface GenAdder<T> {(arg1:T,arg2:T):T};
//使用接口时,需定义好T类型
// let addFunc : GenAdder<number>;
// addFunc = add;
// addFunc(1,2)
```
#### 范型接口定义方式不同,使用方式将不同
参考上面《在ts类型声明时设置好T类型》
查看全部 -
轻微轻微轻微轻微轻微
查看全部 -
module.exports 这是commonJs导出规范;用require()引入模块
export default 是 import 规范;
tsconfig中 esModuleInterop 的作用是兼容模块的导入导出
查看全部 -
初始化一个typescriptp的配置文件: tsc --init;
两个空类型
let u: undefined = undefined
let n: null = null
//区别
Number(null) //0
Number(undefined) // NaN
console.log(undefined == null) //true
3.类型检测
let height: number
height = 100 //success
height = '100' //fail
height = null //success
height = undefined //success
这是因为其他类型都包含null和undefined类型
查看全部 -
很好查看全部
-
Classnames库查看全部
-
Keyof查看全部
举报