或许没听懂的TS内容| 青训营笔记

67 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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),下次见!

今天还看到个证书:

image.png