跳转到内容

理灵文化

发布于:

汗流浃背

汗流浃背

甚至不小心鸽了一个多小时

1.介绍js数组方法,数组遍历方法的相关区别

2.react常用hook

3.css居中

4.ts工具类型

5.== 和 === 区别

6.filter 和 find 区别

7.语义化标签用处,怎么用

8.interface和type区别

9.学习路线,怎么学习的,看谁的博客

10.display:noneopacity: 0的区别

11.严格模式会渲染两次吗

项目相关 (失忆完了)

五天内

TS工具类型

一种在类型别名的基础上,基于泛型去动态创建新类型

Partial:将所有类型设置为可选Partial<A>

Required:所有属性必选

readonly:将属性标记为只读

Record:声明属性名还未确定的接口类型

Record<K,T>构造具有给定类型T的一组属性K的类型。在将一个类型的属性映射到另一个类型的属性时,Record非常方便。

type UserProps = "name" | "job" | "email";
// 等价于你一个个实现这些属性了
type User = Record<UserProps, string>;
const user: User = {
  name: "John Doe",
  job: "fe-developer",
  email: "john.doe@example.com",
};

Pick:接收一个对象类型,以及一个字面量类型组成的联合类型,这个联合类型只能是由对象类型的属性名组成的。它会对这个对象类型进行裁剪,只保留你传入的属性名组成的部分

type User = {
  name: string;
  age: number;
  email: string;
  phone: string;
};
// 只提取其中的 name 与 age 信息
type UserBasicInfo = Pick<User, "name" | "age">;

Omit:就是 Pick 类型的另一面,它的入参和 Pick 类型一致,但效果却是相反的——它会移除传入的属性名的部分,只保留剩下的部分作为新的对象类型

type User = {
  name: string;
  age: number;
  email: string;
  phone: string;
};

// 只移除 phone 属性
type UserWithoutPhone = Omit<User, "phone">;

ExcludeExtract:差集和交集

type UserProps = "name" | "age" | "email" | "phone" | "address";
type RequiredUserProps = "name" | "email";
// OptionalUserProps = UserProps - RequiredUserProps
type OptionalUserProps = Exclude<UserProps, RequiredUserProps>;
const optionalUserProps: OptionalUserProps = "age"; // 'age' | 'phone' | 'address';

Extract

type UserProps = "name" | "age" | "email" | "phone" | "address";
type RequiredUserProps = "name" | "email";
type RequiredUserPropsOnly = Extract<UserProps, RequiredUserProps>;
const requiredUserPropsOnly: RequiredUserPropsOnly = "name"; // 'name' | 'email';
display none 和 opacity 0二者的区别

display:none

opacity:0

无障碍性考虑

display:none

opacity: 0:

额外
display: nonevisibility: hiddenopacity: 0
是否占有空间×
是否可以进行DOM事件监听××
是否可以点击××
是否可以被子元素继承×
子元素能否通过改变属性值来改变继承自父亲的隐藏状态××

visibility: hidden 是什么?

display: none: 从这个世界消失了, 不存在了; opacity: 0: 视觉上隐身了, 看不见, 可以触摸得到; visibility: hidden: 视觉和物理上都隐身了, 看不见也摸不到, 但是存在的。

来源:opacity: 0、visibility: hidden、display: none 优劣和适用场景,以及隐藏元素的几种方法 - 掘金 (juejin.cn)