首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分享 30 道 TypeScript 相关面的面试题

答案:可区分联合(也称为标记联合)是一种结合了联合类型、文字类型和类型保护的模式。 当一个对象可以有多个形状但共享一个公共属性(通常是文字类型)时,可以使用它们,该属性可用于缩小其确切形状。...,它允许读取位于连接对象链深处的属性值,而无需检查链中的每个引用是否有效。如果任何引用为 null 或未定义,则表达式会与未定义的值短路。 空合并运算符 (??)...是一个逻辑运算符,当其左侧操作数为空或未定义时返回其右侧操作数,否则返回其左侧操作数。这在您想要回退到默认值的情况下非常有用。 22、什么是映射类型,以及如何在 TypeScript 中使用它们?...30、解释在高级类型场景中如何以及为何使用 keyof 和 typeof 运算符。 答案:keyof 运算符生成给定类型的已知公共属性名称的并集,这对于限制可能的字符串值或创建映射类型很有用。...typeof 运算符在类型上下文中使用时,获取变量、常量或对象文字的类型,这对于基于现有对象的形状创建类型非常有用,而无需手动重复其结构。

1K30

深入学习下 TypeScript 中的泛型

如果仔细查看您的函数,您会发现参数列表或 TypeScript 能够推断其值的任何其他地方都没有使用泛型。这意味着调用代码在调用您的函数时必须显式传递此泛型的类型。...keyof T 运算符用于返回具有 T 中所有可用属性名称的联合。然后使用 K in 语法指定新类型的属性是返回的联合类型中当前可用的所有属性 T键。...这将创建一个名为 K 的新类型,它绑定到当前属性的名称。这可用于使用语法 T[K] 访问原始类型中此属性的类型。在这种情况下,您将属性的类型设置为布尔值。...这是正确的,因为 A 确实扩展了字符串类型而 B 没有扩展字符串类型,因为它被设置为具有字符串类型的单个名称属性的对象的类型。...使用 NestedOmit 泛型,传入类型,然后列出要省略的属性的键。 请注意如何在第二个类型参数中使用点符号来标识要省略的键。然后将结果类型存储在 Result 中。

39K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入学习下 TypeScript 中的泛型

    如果仔细查看您的函数,您会发现参数列表或 TypeScript 能够推断其值的任何其他地方都没有使用泛型。这意味着调用代码在调用您的函数时必须显式传递此泛型的类型。...keyof T 运算符用于返回具有 T 中所有可用属性名称的联合。然后使用 K in 语法指定新类型的属性是返回的联合类型中当前可用的所有属性 T键。...这将创建一个名为 K 的新类型,它绑定到当前属性的名称。这可用于使用语法 T[K] 访问原始类型中此属性的类型。在这种情况下,您将属性的类型设置为布尔值。...这是正确的,因为 A 确实扩展了字符串类型而 B 没有扩展字符串类型,因为它被设置为具有字符串类型的单个名称属性的对象的类型。...使用 NestedOmit 泛型,传入类型,然后列出要省略的属性的键。 请注意如何在第二个类型参数中使用点符号来标识要省略的键。然后将结果类型存储在 Result 中。

    17710

    【TypeScript 4.5】003-第 3 章 常用类型

    node .\06-obj.js x 的值为3 y 的值为7 x 的值为3 y 的值为undefined # 这是未传入 y 的情况 3、使用可选属性 注意点 使用可选属性之前需要判断其是否传入!...1 y 的值为7 判断方法二:传入了 y ! 2 y 的值为7 判断方法三:必须执行! 3 y 的值为7 x 的值为3 判断方法三:必须执行!...九、接口 1、概述 通常情况下,我们将 TypeScript 称之为结构类型的类型系统,其原因就是 TypeScript 只关心类型的结构和功能,接口就是一种结构类型,它是定义对象类型的另外一种方式。...事实上,TypeScript 只允许将类型断言转换为更具体或不太具体的类型!...1、概述 JavaScript 一些不太常用的原语在 TypeScript 中也实现了 我们来学习两个:bigint(非常大的整数) 和 symbol(全局唯一引用)。

    8210

    TypeScript 入门

    语句和表达式 注释 2.空白和换行 TypeScript 会忽略程序中出现的空格、制表符和换行符。...4.分号是可选的 每行指令都是一段语句,你可以使用分号或不使用, 分号在 TypeScript 中是可选的,建议使用。 如果语句写在同一行则一定需要使用分号来分隔,否则会报错。...字符串 string 一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。...转译后消失的符号 → 类型空间 作为类型注解、别名的符号 → 类型空间 ( type T = typeof Person; const p: Person) 类型断言后的符号 → 类型空间 (...) 在值空间,valfield 或 val.field 返回 val 对应属性的值 在类型空间,TypeT 返回对应 TS 类型 this关键字 在值空间,this 指向...比较复杂 在类型空间,this

    1.7K20

    如何在TypeScript中使用基本类型

    我们创建变量并为其分配一个值,但不指定类型,如下所示: const language = { name: "JavaScript" }; 在此代码块中,语言是一个对象,其中包含属性名称的字符串值。...语言及其属性的值类型没有明确设置,如果未来的开发人员不知道语言引用了哪种值,这可能会在以后引起混淆。 TypeScript 的主要优点是严格的类型系统。静态类型语言是一种在编译时就知道变量类型的语言。...如果我们明确设置变量的类型,然后使用不同的类型作为其值,TypeScript 编译器 (tsc) 或我们的编辑器将显示错误 2322。...有关 JavaScript 中符号的更多信息,请阅读 Mozilla 开发人员网络 (MDN) 上的符号文章。 Array 在 TypeScript 中,数组是根据它们预期具有的元素进行类型化的。...null and undefined TypeScript 中的 null 和 undefined 值具有它们自己的唯一类型,它们以相同的名称调用: const someNullField: null

    3.7K10

    Rust基础知识

    3、内存管理 不使用自动垃圾回收系统,通过 RAII 来管理内存和资源,还可选引用计数。 4、所有权 所有的值都有一个唯一的属主,值的有效范围跟属主的有效范围一样。...1、整数型 (i、u) Rust 语言的类型类似于 C 系列的语言,整形数据会根据是否有符号分为有符号和无符号类型。...默认情况下,浮点型数据类型是 64 位浮点数,因为现代计算机处理器对两种浮点数计算的速度几乎相同,但 64 位浮点数精度更高。...注意:由于中文文字编码有两种(GBK 和 UTF-8),所以编程中使用中文字符串有可能导致乱码的出现,这是因为源程序与命令行的文字编码不一致,所以在 Rust 中字符串和字符都必须使用 UTF-8 编码...let c = 'a'; 5、复合类型 数组想必大家都很熟了,就是由中括号包括的一组相同类型的数据,但是我们需要知道的是,Rust 中的数组是固定长度的,也就是说我们不能在确定一个数组后再去进行新增或删除的操作

    78730

    AngularDart4.0 指南- 模板语法一 顶

    {{1 + 1}}中的内插大括号包围模板表达式1 + 1.在下面的属性绑定部分中,在[property] =“expression”中,模板表达式显示在符号右侧的引号中。...{{hero.name}}中的英雄是指变量输入变量,而不是组件的属性。 模板表达式不能引用静态属性,也不能引用顶层变量或函数,如来自dart:html的window 或document 。...这样的输入映射到指令自己的属性。 如果名称未能匹配已知指令或元素(property)的属性,则Angular会报告“未知指令”错误。 避免副作用 如前所述,模板表达式的评估必须没有可见的副作用。...返回适当的类型 模板表达式应通过目标属性计算预期值的类型: 如果目标属性需要一个字符串,则返回一个字符串。 如果目标属性期望一个数字,则返回一个数字。 如果目标属性需要一个对象,则返回一个对象。...以前缀attr开头,后跟一个点(.)和属性名称代替括号之间的元素属性。然后使用解析为字符串的表达式来设置属性值。

    5.2K10

    分享 16 个有用的 TypeScript 和 JS 技巧

    JavaScript 中可用的所有技巧都可以在 TypeScript 中以相同的语法使用。唯一的细微差别是在 TypeScript 中指定类型。...要使用模板文字,请将字符串包装在 `` 中,并将变量包装在这些字符串中的 ${} 中。...` 05、对象属性赋值简写 在 JavaScript 和 TypeScript 中,我们可以通过在对象字面量中提及变量来以简写形式将属性分配给对象。为此,必须使用预期的键命名变量。...[2]) // undefined 07、对象解构 除了传统的点符号之外,另一种读取对象值的方法是将对象的值解构为它们自己的变量。...16、TypeScript 构造函数简写 通过 TypeScript 中的构造函数创建一个类并为类属性赋值有一个简写。

    1.1K20

    分享 40 道关于 Typescript 的面试题及其答案

    答案:TypeScript 中的接口定义了对象结构的契约,指定其属性和方法的名称和类型。它们促进强大的类型检查并实现更好的代码组织。...在此示例中,Greeting 是一个模板文字类型,它根据提供的名称生成问候语。...答案:TypeScript 中的“Const 断言”允许您通知编译器特定的文字表达式应被视为文字而不是扩展类型。...答案:TypeScript 中的“as const”断言用于推断数组和对象的文字类型。它告诉编译器该值应被视为常量,而不是扩展到其基本类型。...答案:TypeScript 接口中的索引签名允许您根据属性的名称定义属性的类型。它们用于定义具有动态属性名称的对象。

    87130

    JavaScript 权威指南第七版(GPT 重译)(一)

    其中许多(如if、while和for)是必须避免用作常量、变量、函数或类名称的保留关键字(尽管它们都可以用作对象内的属性名称)。...然而,在实践中,null通常被视为其自身类型的唯一成员,并且它可以用于表示数字、字符串以及对象的“无值”。...同样,如果使用符号属性名称并且不共享这些符号,您可以确信程序中的其他代码模块不会意外地覆盖您的属性。 在实践中,符号作为一种语言扩展机制。...在 Node 中,全局对象有一个名为global的属性,其值是全局对象本身,因此在 Node 程序中始终可以通过名称global引用全局对象。...从这段代码中可以看出,将对象(或数组)赋给变量只是赋予了引用:它并不创建对象的新副本。如果要创建对象或数组的新副本,必须显式复制对象的属性或数组的元素。

    91910

    50道JavaScript详解面试题,你需要了解一下

    答案是输出为10,因为将对象传递给函数时的对象相似,仅传递其值,而不传递对内存位置的实际引用。这就是为什么更改仅影响函数范围内的参数的原因。 3、控制台输出是什么?...4、Line1和Line2的控制台输出是什么? 在Line1中,我们有两个相互比较的对象,并且它们都是唯一的,因此它将在控制台上记录为False。...在JavaScript中,我们处理的大多数事物都是对象,类似地,数组只是JavaScript中的特殊对象,它们具有其他对象所没有的属性。 7、以下函数的返回类型是什么?...该对象位于原型链的顶部,当浏览器查找访问属性的值时,它将遍历原型链,直到找到该值或直到不再遍历所有原型为止。 15、空值合并运算符做什么? 当左侧操作数为null或未定义时,它将返回右侧操作数。...41、Array sort()方法的默认排序是什么? 按字符值从最小到最大。 42、什么是比赛条件? 当两个线程或异步进程必须完成自身操作以更新某些共享状态时,否则将出现错误或不良结果。

    3.5K40

    一文学懂 TypeScript 的类型

    TypeScript 为 JavaScript 带来了额外的层:静态类型。这些仅在编译或类型检查源代码时存在。每个存储位置(变量或属性)都有一个静态类型,用于预测其动态值。...对象 与Arrays类似,对象在 JavaScript 中扮演两个角色(偶尔混合和/或更加动态): 记录:在开发时已知的固定数量的属性。每个属性可以有不同的类型。...字典:在开发时名称未知的任意数量的属性。所有属性键(字符串和/或符号)都具有相同的类型,属性值也是如此。 我们将在本文章中忽略 object-as-dictionaries。...方法 .push() 接受类型为 T 的值。 方法 .pop() 返回类型为 T 的值。 如果使用 Stack,则必须为 T 指定一个类型。以下代码显示了一个虚拟栈,其唯一目的是匹配接口。...: U): U; 6 ··· 7} 这是一个Array的接口,其元素类型为 T,每当使用这个接口时必须填写它: 方法.concat()有零个或多个参数(通过 rest 运算符定义)。

    2K41

    MVEL 2.x语法指南

    简单属性表达式 user.name 在这个表达式中,我们只有一个标识符(user.name),在MVEL中我们称它为属性表达式,因为表达式的唯一目的就是从上下文中提取出变量或者对象的属性。...空常量 用null或nil来表示。 六、类型常量 类型常量的处理方式与Java中的相同,格式为:”.“。...所以一个类可以这样限定: java.util.HashMap 或者如果类已经通过或者通过外部配置被导入,则它被简单地通过其非限定名称来引用: HashMap 嵌套类 嵌套类不能通过MVEL 2.0中的标准点表示法...相反,你必须用$符号限定这些类。 org.proctor.Person$BodyPart 七、流程控制 MVEL的强大已经超出了简单的表达式。...函数必须是先声明后引用,唯一例外的是递归调用的时候。 1. 一个简单示例 定义一个简单函数: def hello() { System.out.println("Hello!")

    2.6K20

    PQ语言规范

    表达式是求值的方法;值是评估的结果。 以下示例说明了 M 中可用的不同类型的值。按照惯例,值使用字面形式写入,它们将出现在计算结果为该值的表达式中。(请注意,//表示继续到行尾的注释的开始。)...字段是名称/值对,其中名称是字段记录中唯一的文本值。记录值的文字语法允许在不带引号的情况下写入名称,这种形式也称为identifiers。...函数的编写方式是在括号中列出函数的参数,然后是转到符号=>,然后是定义函数的表达式。该表达式通常是指参数(按名称)。...如果您在 Excel 等电子表格中编写了公式,您可能会发现左侧的公式在计算时会产生右侧的值: 在 M 中,表达式的部分可以通过名称引用表达式的其他部分,并且评估过程将自动确定引用表达式的计算顺序。...如果未指定元数据记录的值,则元数据记录为空(没有字段)。 元数据记录提供了一种以不显眼的方式将附加信息与任何类型的值相关联的方法。将元数据记录与值相关联不会改变该值或其行为。

    97210

    对象

    唯一的区别是,在文字声明中你可以添加多个 键 / 值对,但是在构造形式中你必须逐个添加属性。...的属性,那就必须使用键访问,因为它不是一个有效的标识符属性名 此外,在对象中,属性名永远是字符串 可计算属性名 如果我们需要通过表达式来计算属性名,那刚刚说到的 obj.....这种属性访问方法就可以排上用场 ES6 增加了可计算属性名,可以在文字形式中使用 [] 包裹一个表达式来当作属性名 可计算属性名最常用的场景可能是 ES6 的符号(Symbol)这里不去做详细介绍 function...对于浅拷贝来说,复制出的新对象中 a 的值会 复制旧对象中 a 的值,也就是 2,但是新对象中 b、c、d 三个属性其实只是三个引用,它们 和旧对象中 b、c、d 引用的对象是一样的。...对象默认的内置 [Get] 操作首先在对象中查找是否有名称相同的属性,如果找到就会返回这个属性的值。

    72720

    什么是 TypeScript 4.1 中的模板字面类型?

    字符串字面量可以用作映射类型中的属性名称: type Actions = { [K in 'showEdit' | 'showCopy' | 'showDelete']?...as 子句,我们可以利用模板字面量类型之类的特性轻松地基于旧属性创建新属性名称。...递归条件类型 另一个新增功能是递归条件类型,它允许它们在分支中引用自己,从而能够更灵活地处理条件类型,使得编写递归类型别名更加容易。...这意味着如果我们需要访问上一个示例中的 opts.path 之类的属性,则必须检查其是否存在或使用非 null 断言运算符(后缀 !...要解决这个问题,必须在 Promise 中给 resolve 提供至少一个值,否则,在确实需要不带参数的情况下调用 resolve() 的情况下,必须使用显式的 void 泛型类型参数声明 Promise

    3.9K10

    【笔记】《C++Primer》—— 第2章

    除非对内存有很大要求XD 非bool类型的数转换时,0变为false,其余是true 浮点转整数会舍去小数部分 当给无符号数赋值超过其表达范围的值时,得到的结果会是那个数的取模 当给有符号数赋值超过其表达范围的值时...所有对引用的操作与对原对象的操作效果是都是相同的,它们会同时被改变,将引用作为原来变量的另一种表示就可以了 引用由于只能绑定在对象上,理解为只能绑定在有名称的对象上,所以不能与表达式或者字面值之类的匿名对象绑定...const并加上extern符,然后在需要使用的文件中声明这个const且也加上const符 可以用const修饰引用,被修饰的引用所引用的必须也是常量或字面值之类不可修改的量 被const修饰的引用是指不可利用这个引用来修改原来的变量...关键之来强制指定一个表达式是常量表达式,不是时无法通过检查 指针和引用都可以被定义为constexpr,但是指针的初始值必须是0之类的固定内存内的值 ?...使用很简单,就是auto可以利用等号右边的式子自动得到其类型和值,这个过程在编译中得到 auto会顺便进行变量的赋值,所以auto必须要初始化 auto会忽略掉顶层const 要注意一点就是*和&是属于标识符而不是数据类型

    54020

    缓存查询(一)

    动态SQL的缓存查询名称 SQL引擎为每个缓存查询分配唯一的类名,格式如下: %sqlcq.namespace.clsnnn 其中,NAMESPACE为当前名称空间(大写),NNN为连续整数。...嵌入式SQL的缓存查询名称 SQL引擎为每个嵌入式SQL缓存查询分配一个唯一的类名,格式如下: %sqlcq.namespace.hash 其中,NAMESPACE是当前的名称空间(大写),HASH是唯一的哈希值...多个符号也会生成单独的缓存查询:ABS(+?)。ABS(++?)。因此,最好使用无符号变量ABS(?)。或ABS(:Num),可以为其提供有符号或无符号数字,而无需生成单独的缓存查询。...更改此整数将导致根本不同的查询。 字母文字必须用单引号引起来。某些函数允许指定带引号或不带引号的字母格式代码;只有带引号的字母格式代码才接受文字替换。...请注意,数据类型分配仅基于文字值本身,而不是关联字段的数据类型。例如,在上面的示例中,Age被定义为数据类型INTEGER,但是文字值21.5被列为NUMERIC。

    1.2K20

    Web前端开发HTML笔记

    属性名称 属性说明 bgcolor 指定HTML文档背景色 text 指定HTML文档中文字颜色 link 指定HTML文档中,待链接超链接对象的颜色 alink 指定HTML文档中,链接超链接对象的颜色...vlink 指定HTML文档中,已链接超链接对象的颜色 background 指定HTML文档中,文档的背景文件 特殊字符 在HTML中有很多特殊的符号是需要特别处理的,例如这两个符号是用来表示标签的开始和结束的...------ > name 指定表单的唯一名称,建议其属性与ID属性保持一致方便管理 enctype 设置表单的资料的编码方式,用于input标签type="file"时使用 target...指定使用哪种方式打开目标URL,属性有:_blank,_parent,_self,_top四个值. action 表单数据的处理程序的URL地址,表单中不需要使用action属性也要指定其属性为...size 指定该列表框内可同时显示多少个列表项 name 定义这个列表的名称,就是列表的名字 multiple 该属性不用赋值其作用是,是否使用多选或者下拉框 option

    2.3K20
    领券