本文主要帮助理解 TypeScript 中的高级类型及工具类型。在实际使用 TypeScript 的开发过程中,得益于这些高级类型于工具类型,我们可以更方便的构建出我们需要的类型。...Function>; // string | number type TExcludeTrain = Exclude; // naver Extract Extract 获取构造类型...T 的实例类型构造一个类型 class Human { name= '人类'; age= 800; }; type HumanType = InstanceTypetypeof Human>...; let newHuman: HumanType; let newHuman2: HumanType = new Human(); 三、关键字 keyof keyof T;返回一个由构造类型 T 的所有属性组成的字面量类型...typeof k; 返回变量 k 的类型 let computer: string[] = ["a"]; type MyComputerType = typeof computer; // string
答案:TypeScript 中的“keyof”关键字是一个类型运算符,它返回表示对象键的文字类型的联合。它允许您对对象键执行类型安全操作。...答案:条件类型中的“keyof”关键字用于获取对象类型的键的并集。它允许您以类型安全的方式使用对象的键。“in”关键字检查属性键是否存在于从“keyof”获得的键的并集中。...) 24.TypeScript 中的“keyof”和“typeof”关键字有何用途?...答:“keyof”关键字用于获取对象类型的键的并集,“typeof”关键字用于获取值的类型。...答案:TypeScript 中的“typeof”运算符用于在编译时获取值或变量的类型。当您想要根据变量的类型执行类型检查时,它非常有用。
03、在什么场景下你会使用自定义类型,它们在 TypeScript 中是如何定义的? 答案:当我们有复杂的结构或重复的模式时,使用 type 关键字或接口定义的自定义类型是有益的。...10、readonly 关键字如何改变 TypeScript 变量或属性? 答案:readonly 关键字当作为变量或属性的前缀时,可确保一旦设置其值,此后就无法修改。...答案:可区分联合(也称为标记联合)是一种结合了联合类型、文字类型和类型保护的模式。 当一个对象可以有多个形状但共享一个公共属性(通常是文字类型)时,可以使用它们,该属性可用于缩小其确切形状。...另一方面, === 是一个严格的相等运算符,它检查值和类型,使其在类型敏感的上下文中更安全、更可预测。 15、如何在 TypeScript 中声明只读数组,以及为什么要使用它?...typeof 运算符在类型上下文中使用时,获取变量、常量或对象文字的类型,这对于基于现有对象的形状创建类型非常有用,而无需手动重复其结构。
例如,typeof 操作符可以用于获取一个值的类型;keyof 关键字可以用于获取一个对象所有属性名组成的联合类型;in 关键字可以用于遍历一个联合类型中所有成员等等。...操作符当谈到 TypeScript 类型演算时,typeof、keyof 和 in 是三个非常重要的操作符和关键字。它们在类型系统中扮演着不同的角色,用于获取类型信息、操作对象属性和遍历联合类型成员。...在 TypeScript 中,typeof 操作符也可以用于获取一个值的类型,并将其作为一个类型注解或类型声明使用。...keyof 关键字keyof 是 TypeScript 中的一个关键字,用于获取一个对象所有属性名组成的联合类型。...ReturnType用于获取函数类型 T 的返回值类型。它会创建一个新的类型,其中只包含函数 T 的返回值类型。
5.TypeScript 注释 单行注释 ( // ) − 在 // 后面的文字都是注释内容。 多行注释 (/* */) − 这种注释可以跨越多行。...值空间与类型空间 只包含类型声明的 namespace 不会产生 JS 代码,不会引入变量 instanceof 操作符只作用于值空间 如何判断符号是在哪个空间?...转译后消失的符号 → 类型空间 作为类型注解、别名的符号 → 类型空间 ( type T = typeof Person; const p: Person) 类型断言后的符号 → 类型空间 (...,但是含义完全不同: typeof 在值空间,typeof 返后面表达式对应的 JavaScript 类型的字符串表示 ( string , number , bigint , boolean , symbol..., undefined , object , function )在类型空间,typeof返回标识符对应的 TypeScript 类型 (索引访问操作符 Indexed Access Operator
类型守卫是一种TypeScript技术,用于获取变量类型信息,通常使用在条件块语句中。类型守卫是返回布尔值的常规函数,接受一个类型并告诉TypeScript是否可以缩小到更具体的类型。...有五种主要的方式来使用类型守卫: instanceof关键字 typeof关键字 in关键字 等式收缩式守卫 带有谓词的自定义类型守卫 在本文中,我们将探索上面列出的 5 种方法。让我们开始吧!...看到这里就点个关注呗❤️ typeof 类型守卫 typeof用来确定变量的类型。但typeof的功能是非常有限的。...它只能确定以下JavaScript能识别的类型: Boolean String Bigint Symbol Undefined Function Number 对于这个列表之外的任何内容,typeof只返回...b是Necklace,这会让TypeScript将类型缩减为Necklace,而不是只返回一个布尔值。
类型保护是一种TypeScript技术,用于获取变量类型信息,通常使用在条件块语句中。类型守卫是返回布尔值的常规函数,接受一个类型并告诉TypeScript是否可以缩小到更具体的类型。...有五种主要的方式来使用类型保护: instanceof关键字 typeof关键字 in关键字 等式收缩式保护器 带有谓词的自定义类型保护 在本文中,我们将探索上面列出的 5 种方法。让我们开始吧!...typeof 类型保护 typeof类型保护是用来确定变量的类型。typeof的类型保护据说是非常有限和浅薄的。...它只能确定以下JavaScript能识别的类型: Boolean String Bigint Symbol Undefined Function Number 对于这个列表之外的任何内容,typeof类型保护只返回...b是Necklace,这会让TypeScript将类型缩减为Necklace,而不是只返回一个布尔值。
什么是鸭子类型 鸭子类型是很多面向对象(OOP)语言中的常见做法。它的名字来源于所谓的“鸭子测试”: 当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。...为什么需要鸭子类型 在一些动态语言中,鸭子类型的常见用法就是假设给定值符合我们预期的,你可以先尝试执行一个操作,然后我们再去处理不符合预期的情况下的异常。...); } 这里我们在参数 value 的类型中告诉 TypeScript 解析器,它可能是只鸭子也可能是只猫,你需要再函数体的逻辑中再做进一步判断。...); } 注意,isDuck 的返回值类型中使用了 is 关键字,这在 TypeScript 中被叫做类型谓词(type predicates),类型谓词是一个返回布尔值的函数,可以用来做类型保护;...换句话说,类型保护可以保证一个字符串是一个字符串,尽管它的值也可以是一个数字。 实际上它就是告诉 TypeScript 编译器给定的值是就是我们给定的那个类型。
它的语法是一个类型断言,用 const 代替类型名称(例如 123 as const)断言构造新的文字表达式时,我们可以向语言发出以下信号: 该表达式中的字面类型不应被扩展(例如:不能从“hello”转换为字符串...) 对象字面量获取只读属性 数组文字成为只读元组 感觉有点枯燥,还有点混乱。...当我们使用关键字 const 声明一个字面量时,类型是等号右边的文字,例如: 1const x = 'x'; // x has the type 'x' const 关键字确保不会发生对变量进行重新分配...,并且只保证该字面量的严格类型。...用新的 const 功能,我可以这样做: 1let y = 'x' as const; // y has type 'x'` 对象字面量获取只读属性 在 Typescript 3.4 之前,类型扩展发生在对象字面量中
,我们还有另一种选择,就是使用 TypeScript 中的 infer 关键字和条件类型: type DictMember = T extends Dictionary ?...V : never type StrDictMember = DictMember // string 除了上述的应用外,利用条件类型和 infer 关键字,我们还可以方便地实现获取...= UnPromisifytypeof personPromise>; // Person 三、ReturnType TypeScript 官方类型库中提供了 RetrunType 可获取方法的返回类型...R : any; 很明显 ReturnType 内部也是利用条件类型和 infer 关键字,来实现获取方法的返回类型。...infer 关键字 深入理解 TypeScript - infer
never类型是 TypeScript 的底层类型,表示从未出现的值的类型。 分布式有条件类型 那么,为什么e 条件类型和never类型的组合是有用的呢?它有效地允许咱们从联合类型中删除组成类型。...有条件类型中的类型推断 有条件类型支持的另一个有用特性是使用新的infer关键字推断类型变量。...ReturnType -- 获取函数返回值类型。 InstanceType -- 获取构造函数类型的实例类型。... 获取构造函数类型的实例类型。...这就是为什么将B类型解析为[any],即具有一个元素的元组的原因。
一些关键字 使用类型别名可以实现很多复杂的类型,很多复杂的类型别名都需要借助关键字,我们先来了解一下几个常用的关键字: extends extends 可以用来继承一个类,也可以用来继承一个 interface...typeof 在 JS 中 typeof 可以判断一个变量的基础数据类型,在 TS 中,它还有一个作用,就是获取一个变量的声明类型,如果不存在,则获取该类型的推论类型。...ReturnType 该类型的作用是获取函数的返回类型。...InstanceType 该类型的作用是获取构造函数类型的实例类型。...就是只支持处理第一层的属性,如果是嵌套多层的就没有效果了,不过可以如下自定义: type PowerPartial = { // 如果是 object,则递归类型 [U in keyof
:TS 内置工具泛型高阶使用 TypeScript 2.1 新特性一览:查找/映射类型及 any 类型的推断 都是在 2.1 版本引入的 TypeScript 2.8:Exclude 等条件类型是在 2.8...1.4、`infer` 关键字 infer 这个关键字是在 TS 2.8 版本引入的, 在条件类型语句中,该关键字用于替代手动获取类型。...扩展:内置的 Partial 有个局限性,就是只支持处理第一层的属性,如果是嵌套多层的就没有效果了,不过可以如下自定义: type PowerPartial = { // 如果是 object...R : any; 解释: 我们可以用 infer 声明一个类型变量,是用它获取函数的返回类型,简单说就是用它取到函数返回值的类型方便之后使用....Person 这个类型了 4.2、InstanceType(官方) 作用:用于获取构造函数类型的实例类型 源码: // node_modules/typescript/lib/lib.es5.d.ts
satisfies 关键字就是用来解决这个问题的,它既能让我们验证表达式的类型是否与某个类型匹配,也可以保留基于值进行类型推断的能力。...}}类的自动访问器会转化为具有无法访问的私有属性的获取和设置访问器。...编辑器增强:“Remove Unused Imports” 和 “Sort Imports”在之前的版本,TypeScript只支持两个编辑器命令来管理 import。...编辑器增强:对于 return 关键字的 Go-to-Definition在编辑器中,当对return关键字执行go-to-definition,TypeScript会跳到相关函数的顶部,这有助于我们快速了解...我们期望 TypeScript 可以扩展这个行为到更多的关键字,比如 await 和 yield,switch、case 和 default。
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。...TypeScript 设计目标是开发大型应用,它可以转译成纯 JavaScript,转译出来的 JavaScript 可以运行在任何浏览器上。 ? 举个TypeScript的例子。...npm install -g typescript TypeScript的保留关键字如下。...支持两种类型的注释 单行注释 ( // ) − 在 // 后面的文字都是注释内容。...注意: TypeScript 和 JavaScript 没有整数类型。
\dist> node .\08-alias.js 大哥刘备 九、接口 1、概述 通常情况下,我们将 TypeScript 称之为结构类型的类型系统,其原因就是 TypeScript 只关心类型的结构和功能...通过关键字 interface 定义!...一种是可以改变,一种是不可改变 这反应在 TypeScript 就是如何为文字创建类型。...所谓文字类型,就是将一段文字作为类型!...在函数中使用 文字类型的使用场景和还是很多的!所谓的文字不仅仅是字符串,也可以是数字等! // 1、声明函数 function say(name: string, content: "早安!"
一、keyof 简介 TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。...keyof 操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。...首先定义了 T 类型并使用 extends 关键字约束该类型必须是 object 类型的子类型,然后使用 keyof 操作符获取 T 类型的所有键,其返回类型是联合类型,最后利用 extends 关键字约束...最后,我们来简单介绍一下 keyof 与 typeof 操作符如何配合使用。 四、keyof 与 typeof 操作符 typeof 操作符用于获取变量的类型。...const COLORS = { red: 'red', blue: 'blue' } // 首先通过typeof操作符获取color变量的类型,然后通过keyof操作符获取该类型的所有键,
例如,在前面的示例中,我们重构了代码,以使 TypeScript 的类型系统能够通过从实现中定义状态类型来正确推断 readonly类型。...someProps: string } & typeof defaultProps; 此外,我们不能用联合和交集创建的类型扩展interface,因此在这些情况下,我们必须使用 type。...,因此不需要通过显式使用 public 关键字来添加额外的样板文件。...Component { private fetchProfileByID () {} render () { return // jsx blob } } 在上面的代码中,private 只在编译时将...但是,还有更好的模式,比如使用编译类型文字,如下所示: // Don't do this enum Response { Successful, Failed, Pending } function
7、以下函数的返回类型是什么? 答案,是B,因为异步函数在JavaScript中返回Promises 。...8、等待关键字会阻止应用程序中的所有JavaScript代码执行,直到返回等待的Promises? 答案是False,await关键字仅阻止执行包含await关键字的特定函数内的代码。...以下语法是有效的,因为我们正在将异步函数的返回值传递给callback。 11、typeof和instanceof之间没有什么区别? typeof返回类型, instanceof返回布尔值。...instanceof需要TypeScript,而typeof则不需要。 typeof在右侧使用变量名称, instanceof在左侧和右侧使用值,而不是。...new Object()&Object.create()和文字符号,其中我们定义了像this-(const obj = {a:2})这样的对象。 38、控制台输出是什么,为什么?
接口的基础篇 接口的定义 和 java 语言相同,TypeScript 中定义接口也是使用 interface 关键字来定义: interface IQuery { page: number; }...正确的调用方式如下: if (p.delete) { p.delete(); } 大家可能会问既然是可选属性,可有可无的,那么为什么还要定义呢?...在代码设计中,接口是一种规范;接口通常用于来定义某种规范, 类似于你必须遵守的协议, 站在程序角度上说接口只规定了类里必须提供的属性和方法,从而分离了规范和实现,增强了系统的可拓展性和可维护性; 接口的继承...这相当于复制接口的所有成员。接口也是用关键字 extends 来继承。...type PetList = [Dog, Pet] type 语句中还可以使用 typeof 获取实例的 类型进行赋值 // 当你想获取一个变量的类型时,使用 typeof let div = document.createElement
领取专属 10元无门槛券
手把手带您无忧上云