这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
第四天学习了TypeScript相关课程内容,我把我没看懂的内容做了一些笔记😒。
这次就文字笔记多,敲的代码少了,毕竟还是理论课程。
接下来看看我的笔记:
js动态类型:是发生在编译时,类型才确定。
TypeScript中高级类型Record Record<K,T>构造具有给定类型T的一组属性K的类型。
泛型约束:
联合|交叉
没有重合点才会用类型守卫:即 类型谓词 is
interface IMerge{
<T extends Record<string, any>>(sourceObj:Partial<T>, targetObj:T):T;
}
type IPartial<T extends Record<string, any>> ={
[P in keyof T]?:T[p];
}
TS内置Partial类型
type IReturnType<T extends (...args: any)=>any> = T extends (...args:any)=>infer R?R:any
extends 出现在泛型,表类型推断
如 T === 判断类型?类型A:类型B
(md这说的是啥??)
infer 定义类型变量 该场景下 将函数的返回值类型作为变量,使用新泛型R表示,使用在类型推断命中的结果中。
node tsc
附带一下昨天的转载吧:(为什么转载?补充学习呀!!)
今天还是快速看完了这个TypeScript内容,总结起来就是:TypeScript静态检查类型优势!可拓展性更好,可维护性更好。
以下转原文:ts 中的type关键字 - 简书 (jianshu.com)
一、type定义
type作用就是给类型起一个新名字,支持基本类型、联合类型、元祖及其它任何你需要的手写类型,常用于联合类型
type test = number; //基本类型
let num: test = 10;
type userOjb = {name:string} // 对象
type getName = ()=>string // 函数
type data = [number,string] // 元组
type numOrFun = Second | getName // 联合类型
type和interface的区别
1、和接口一样,用来描述对象或函数的类型
type User = {
name: string
age: number
};
type SetUser = (name: string, age: number)=>void;
2、扩展和实现(extends & implement)
interface可以扩展,type可以通过交叉实现interface的extends行为
interface可以extends type,同时type也可以与interface类型交叉
以上转完。
疑惑,疑惑,what TS🤔!
这里是[可嘉的掘金博客](https://juejin.cn/user/378680749333096),下次见!
今天还看到个证书: