当前位置: 首页 > wzjs >正文

想给大学做网站网站如何进行seo

想给大学做网站,网站如何进行seo,wordpress一级目录的安装,建设规划TypeScript 的类型映射(Mapped Types)是一种高级类型操作工具,允许开发者基于现有类型动态生成新类型。 一、基础概念 什么是类型映射 类型映射通过遍历现有对象的键(属性名),对每个属性进行转换、生成新…

TypeScript 的类型映射(Mapped Types)是一种高级类型操作工具,允许开发者基于现有类型动态生成新类型。

一、基础概念

什么是类型映射

类型映射通过遍历现有对象的键(属性名),对每个属性进行转换、生成新的类型。其语法基于索引签名扩展,结合keyof和泛型实现类型推导。

举例:

type OptionsFlags<T> = {[K in keyof T]: boolean;
};

此代码将任意对象类型T的所有属性值改为布尔类型。

二、核心语法与功能

1. 基本语法

  • 遍历键集合:使用 [K in keyof T] 语法遍历 T 的所有属性名。
  • 值类型转换:对每个属性 K 的值进行重新定义,如 T[K] 或转换后的类型。

举例:复制类型

type Original = { a: number; b: string };
type Copy = { [K in keyof Original]: Original[K] }; // 等同于 Original

2. 修饰符操作

类型映射可以修改属性的特性(可选性、只读性):

  • 添加修饰符:使用 +? 或 +readonly(可简写为 ? 和 readonly) 。
     
  • 移除修饰符:使用 -? 或 -readonly

举例:移除可选性

type Concrete<T> = {[K in keyof T]-?: T[K];
};
type MaybeUser = { id?: string; name?: string };
type User = Concrete<MaybeUser>; // { id: string; name: string }

3. 键名重映射( Key Remapping 

通过 as 关键词重命名键,常结合模板字面量或工具类型(如 Capitalize)实现复杂转换。

举例:生成Getters类型

type Getters<T> = {[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
};
interface Person { name: string; age: number; }
type LazyPerson = Getters<Person>; 
// { getName: () => string; getAge: () => number }

4. 属性过滤

通过条件类型过滤特定属性:

type Filter<T> = {[K in keyof T as T[K] extends string ? K : never]: string;
};
type User = { name: string; age: number }; 
type FilteredUser = Filter<User>; // { name: string }

5. 联合类型映射

可将联合类型转换为对象类型:

type Shape = { kind: "square"; x: number } | { kind: "circle"; radius: number };
type EventMap<T extends { kind: string }> = {[E in T as E["kind"]]: (event: E) => void;
};
type Config = EventMap<Shape>; 
// { square: (e: { kind: "square"; x: number }) => void; circle: ... }

三、内置工具类型

TypeScript 提供了多个基于映射类型的工具类型,这里简单列举几个,想更详细了解可以去看我的前置文章《解读TypeScript 类型工具》。

  1. Partial<T>:所有属性变为可选。
  2. Required<T>:移除属性可选性。
  3. Record<K, V>:生成键为 K、值为 V 的类型 。

举例:

type Partial<T> = {[K in keyof T]?: T[K];
};

四、实际场景应用

1. 动态生成类型适配器

例如将api响应转换为前端组件需要的格式:

type APIResponse = { id: number; title: string; content: string };
type UIComponentProps = {[K in keyof APIResponse as `data-${K}`]: APIResponse[K];
};
// 结果:{ data-id: number; data-title: string; data-content: string }

2. 统一权限管理

将配置类型自动转换为权限类型:

type AppConfig = { username: string; layout: string };
type AppPermissions = {[K in keyof AppConfig as `change${Capitalize<K>}`]: boolean;
};
// { changeUsername: boolean; changeLayout: boolean }

3. 第三方库类型扩展

为 DOM 元素添加自定义属性:

type ElementAttributes = { id: string; class: string };
type CustomElement<T> = {[K in keyof T as `data-${string & K}`]: T[K];
} & ElementAttributes;
http://www.dtcms.com/wzjs/412279.html

相关文章:

  • 如今做哪个网站能致富肇庆seo
  • 集团门户网站建设公司在百度如何发布作品
  • wordpress js 代码编辑器网络优化大师app
  • 网站做标签页外贸海外推广
  • 手机端网站开发流程图正规seo关键词排名哪家专业
  • 大连外贸网站建设长沙专业网站制作
  • 怎么把自己做的网站发布出去市场营销方案怎么写
  • 遨游网站建设百度问答app下载
  • 开通网站必须做域名空间百度百度一下你就知道主页
  • 手机网站需要域名吗百度统计数据分析
  • 公司网站建设的灰色词排名代做
  • 自己电脑上做网站别人访问怎么让网站排名上去
  • 做外卖有哪些网站网站开发制作培训学校
  • 公司变更法人一般需要多少时间昆明关键词优化
  • 大学院系网站建设网站优化查询
  • app免费版下载安装优化排名
  • 网站开发建设须知企业网站优化公司
  • 淄博做网站优化专业培训大全
  • 衡水哪有做网站的seo搜索引擎优化薪资
  • 外地公司做的网站能备案网站seo资讯
  • 动态购物网站开发源代码线上营销的优势
  • 做外贸必须有网站吗搜索引擎有哪些网站
  • 企业网站建站系统上海今天发生的重大新闻
  • dw制作网站网页模板企业培训的目的和意义
  • 用服务器建立网站教程纵横seo
  • wordpress后台用户名北京首页关键词优化
  • 公司备案证查询网站查询系统谷歌seo网站推广怎么做优化
  • 网站推广技术天津seo优化
  • 上海做网站服务商厦门网站推广优化哪家好
  • 制作网站建设的公司爱站小工具计算器