💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] >[success] # 内置类型 **内置类型** : **JS** 有许多 **原生对象** ,例如 使用 **new Date()** 时,**鼠标指向被赋值的变量** 时就会显示是 **Date类型** ,这些都是 **内置类型** ,这些 **内置类型** 在安装 **tsc** 时候会当做一个附加礼物送给我们,在每个**TS** 项目中,**会被自动的加载进去** ,下面用代码展示一下: **index.ts** ~~~ const a:Array<number> = [1, 2, 3] ~~~ **编辑器图片** : ![](https://img.kancloud.cn/4d/90/4d908315772558bd3fbf944b3fa843bf_1320x354.png) 在**windows** 中按住 **ctrl** 点击定义的类型,就会弹出一个 **类型的提示弹窗** ,这时候我们会发现, **它会在不同的文件中都有定义,但是他们都是内部(置)类型的一部分,根据不同的版本或者功能,合并了在一起,这些文件都会以 lib 开头,以 .d.ts 结尾,告诉大家我是一个内置对象的类型** 。 <br/> 接下来我们看看其他的,我们定义一个 **new Date()** ~~~ const date = new Date() ~~~ **编辑器图片** : ![](https://img.kancloud.cn/a5/d0/a5d05de7c988c6ce5d6d760cf43f2d71_547x613.png) 在 **常量名称** 上 **鼠标单击右键点击【转到类型定义 或者 Go to Type Definition】** ,就会弹出 **内置类型** 文件的位置,跟刚才的 **Array<number\>** 一样。这时候我们就有 **Date** 的类型了,使用时会提示 **Date** 的一些方法,如下: ![](https://img.kancloud.cn/83/04/83049ccb17a8b1cff8d47197fe112204_583x362.png) 我们刚才看的 **TS 内部标准库** 也就是刚才看的 **.d.ts 结尾的文件** ,里面好多 **带有版本号注明** 的 **.d.ts** 的文件,**也就是说在 TS 中我们可以随意使用最新版本的 JS 语法** 。 >[success] ## 实用程序类型(Utility Types) [TS官网实用程序类型](https://www.typescriptlang.org/docs/handbook/utility-types.html) 除了 **内置类型** , **TS** 还提供了一些 **功能性帮助性** 的 **类型** ,这些 **类型** 在 **JS** 中是看不到的,我们称这些类型叫做 **Utility Types** ,我们下面做 **2** 个 **Utility Types** 例子。 1. **Partial(部分)** :它可以 **把传入的类型都变成可选** 。 **index.ts** ~~~ // 定义接口 interface IPerson { name: string age: number } // 使用接口 let viking: IPerson = { name: 'viking', age: 20 } // 定义类型别名 Partial type IPartial = Partial<IPerson> // 使用接口 let viking2: IPartial = { name: 'viking' } ~~~ 编辑器图片: ![](https://img.kancloud.cn/b2/b3/b2b3111e4b7997a25c42bcb60bacdd3f_484x326.png) 可以看到 **IPartial** 中的 **name** 与 **age** 都变成了 **可选状态** 。 2. **Omit(忽略)** :它可以 **忽略传入类型的某个属性** **index.ts** ~~~ // 定义接口 interface IPerson { name: string age: number } // Omit<要操作的类型, '要忽略的属性名称'> type IOmit = Omit<IPerson, 'name'> ~~~ 编辑器图片: ![](https://img.kancloud.cn/18/9e/189e3228b102775d3a4ef997d670dc8d_409x255.png) 这样就能看到 **name** 属性被忽略掉了 。