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

为什么TypeScript不会抱怨带有计算键的分部类型中的值不正确?

TypeScript不会抱怨带有计算键的分部类型中的值不正确,是因为它的类型系统允许使用计算键来定义对象的属性。计算键是指在对象字面量中使用表达式作为属性名,而不仅仅是使用字符串或标识符。

在TypeScript中,计算键可以用于定义对象的属性,这样可以在运行时动态地确定属性名。这在某些场景下非常有用,比如处理动态属性名的情况。

当使用计算键定义对象的属性时,TypeScript会根据属性的类型进行类型检查。如果属性的类型与定义的类型不匹配,TypeScript会给出类型错误的提示。但是,由于计算键的属性名是在运行时确定的,TypeScript无法在编译时对属性的值进行类型检查。

因此,TypeScript不会抱怨带有计算键的分部类型中的值不正确,因为它无法确定属性的值是否正确。这也是为什么在使用计算键定义属性时,需要谨慎处理类型的一致性,以避免潜在的运行时错误。

总结起来,TypeScript允许使用计算键来定义对象的属性,但无法在编译时对属性的值进行类型检查。因此,在使用计算键定义属性时,需要注意确保属性的类型与定义的类型一致,以避免潜在的运行时错误。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【TS 演化史 -- 13】字符串枚举 和 弱类型(Weak Type)探测

字符串枚举 TypeScript 2.4 实现了最受欢迎特性之一:字符串枚举,或者更精确地说,带有字符串成员枚举。...字符串枚举成员没有反向映射 TypeScript 为每个构造映射对象枚举发出一些映射代码。...从 TypeScript 2.4 开始,当属性没有重叠时,给弱类型赋值是一个错误,带有以下消息类型检查器错误 类型“{ semicolons: boolean; }”与类型“PrettierConfig...另一个好处是 TypeScript 语言可以给咱们自动完成建议,因为类型注释告诉它咱创建对象类型。 弱类型解决方法 如果出于某种原因,咱们就是不想从特定弱类型类型检测获得错误,该怎么办?...这里结论是,弱类型检测目的设计是为了最小化误报(正确使用被视为不正确)数量,这是以牺牲更少真报(不正确使用被视为不正确)为代价

1.6K10

TS - Index Signatures

让我们找到什么是TypeScript索引签名以及何时需要它们。 1.为什么要索引签名 索引签名思想是在您只知道类型时键入未知结构对象。...[key: boolean]: string; } 3.索引签名警告 TypeScript索引签名有一些您应该注意注意事项。...3.1不存在财产 如果您尝试访问索引签名为{ [key: string]: string }对象不存在属性会发生什么? 正如预期那样,TypeScript类型推断为string。...索引签名将类型映射到类型-仅此而已。如果您不正确映射,类型可能会偏离实际运行时数据类型。 为了使键入更准确,请将索引标记为string或undefined。...索引签名由方括号索引名称及其类型组成,后跟冒号和类型:{ [indexName: Keys]: Values }。

7710

TypeScript 5.4:带来新类型和一些 Break Change

其实也是属于类型收窄一种。 工具类型:NoInfer 在 TypeScript ,有时候我们写代码时候不需要明确告诉它变量是什么类型TypeScript 会自动根据我们给来推断出类型。...这可能会导致 TypeScript 错误地拒绝有效调用,还会接受有问题调用,或者在捕获到错误时报告不正确异常信息。...这个方法虽然行得通,但是有点别扭,因为 D 在 createStreetLight 签名可能不会再被用到。虽然在本例还算可接受,但在签名只使用一次类型参数通常是不太好代码。...这就是为什么 TypeScript 5.4 引入了一个新 NoInfer 工具类型。...在 TypeScript 5.4 之前版本,对于 first 和 second 赋值,TypeScript 会仅仅基于 U 约束来进行类型推断而不会充分考虑可能情况。

27510

Web前端面试敲重点知识,14个TypeScript核心基础面试题和答案

image.png 本次主题内容目录! 1、为什么越来越多企业选择使用TypeScript ? 2、TypeScript 原始类型有哪些 ?...6、TypeScript 声明变量有哪些不同关键字? 7、如何书写带有类型注释函数 ? 8、如何在 TypeScript 创建对象 ? 9、如何在 TypeScript 中指定可选属性 ?...代码都是有效 TypeScript 代码,将 .js 文件重命名为 .ts 不会改变任何内容 TypeScript 添加了可选静态类型和语言特性,例如类和模块 TypeScript 纯粹是一个编译时工具...image.png 6、TypeScript 声明变量有哪些不同关键字? image.png 7、如何书写带有类型注释函数 ?...它们类似于数组,有时也称为关联数组 但是,数组使用数字来索引,而对象允许使用任何其他类型作为 image.png 9、如何在 TypeScript 中指定可选属性 ? 通过添加 ?

11.5K10

【TS 演化史 -- 17】各文件JSX工厂 、有条件类型和映射类型修饰符

因此,包含JSX脚本或模块不能直接在浏览器运行。与带有类型注释文件一样,JSX 文件首先需要编译成纯 JS 文件。...never类型TypeScript 底层类型,表示从未出现类型。 分布式有条件类型 那么,为什么e 条件类型和never类型组合是有用呢?它有效地允许咱们从联合类型删除组成类型。...咱们可以通过清除never类型来简化生成联合类型: type NonNullableUserPropertyKeys = "name"; User类型唯一不可为空属性是“name”。...TypeScript 一个长期存在特性要求是能够提取给定函数返回类型。下面是ReturnType类型简化版本,该类型是在lib.es5.d.ts预定义。...咱们需要传递类型作为类型参数T参数,而不是;这就是为什么ReturnType和ReturnType是不正确

2.5K20

全网最全,最详细,最友好 Typescript 新手教程

现在我们要记住,TypeScript是一种特殊JavaScript,但在浏览器运行之前,它需要一个“转换器”。 TypeScript新手教程:为什么TypeScript?...一开始,你不会完全理解TypeScript为什么有意义,毕竟它在变成JavaScript代码之前已经被剥离了。你会问:“TypeScript有什么用?”这是个好问题,我朋友。...TypeScript新手教程:索引插曲 JavaScript对象是/容器。...总之,我跳过了TypeScript另一个有用特性:函数返回类型。 要理解为返回添加类型注释为什么很方便,请想象一下我正在摆弄您奇特函数。...该函数没有按照预期工作,除非到达生产环境(或测试代码),否则您永远不会知道。幸运是,TypeScript可以捕捉到这些错误,就像你在编辑器那样。

6K40

TypeScript 5.3,带来这些小惊喜

例如,你可以这样写: const id = searchParams.id || throw new Error("id是必需"); 你可能会觉得奇怪,为什么这个在现有的 JavaScript 不可用...在你抱怨之前(我曾明确表示不喜欢返回类型注解),你只需要在共享 package 上启用isolatedDeclarations - 你不用在应用程序代码上启用它。...我希望这能在 TypeScript 5.3 实现。 在泛型函数缩小类型 我对使用泛型函数一个建议是“不要害怕使用as”。现有的 TypeScript 在泛型函数内部缩小类型方面表现不佳。...这里,我们试图根据一个从一个对象返回一个。如果传入'foo',我们返回一个字符串。如果传入'bar',我们返回一个数字。 但 TypeScript 报错了,尽管这段代码看起来是没问题。...原因是 TypeScript 没有缩小 Example[T]到正确。对Example[T]任何缩小都会导致它类型变为never - 因此导致上面的错误。

22620

TypeScript 4.1 发布,新增模板字面量类型

作者 | Dylan Schiemann 译者 | 王者 TypeScript 团队发布了 TypeScript 4.1,其中包括功能强大模板字面量类型、映射类型重映射以及递归条件类型。...映射类型以前仅限于带有已知建新对象类型,现在支持创建新或过滤已有的。...TypeScript 4.1 另一个重要新增功能是递归条件类型,可以更容易地支持数组或复杂 promise 树扁平化方法。条件类型现在可以立即在分支引用自己,从而更容易创建递归类型别名。...这个新特性不会自动包含在 --strict 标记,因为它在一些常见场景中会改变行为,比如遍历 for 循环索引时。...类 abstract 成员不再被标记为 async。调用者只关心返回类型,因此不再存在将 abstract 成员指定为 async 。 any 和 unknown 类型现在会在错误位置传播。

2.5K20

TypeScript 官方手册翻译计划【一】:基础

如果这是你第一次接触到 TypeScript,你可能需要先阅读一下入门指南 JavaScript 每个会随着我们执行不同操作表现出一系列行为。...不过让我们假设一下,我们并不知道 message —— 这是很常见一种情况,仅从上面的代码我们无法确切得知最终结果。每个操作结果完全取决于 message 初始。...当我们执行代码时候,JavaScript 运行时会计算类型 —— 这种类型有什么行为和功能,从而决定采取什么措施。...有了类型注解之后,TypeScript 就能告诉我们,哪些情况下对于 greet 调用可能是不正确。...这也是 TypeScript 默认提供开发体验,类型是可选,推断会使用最松散类型,对于潜在 null/undefined 类型不会进行检查。

90310

TypeScript: 请停止使用 any

我们看到大多数用法都表明我们正在处理 TypeScript 基本类型。在文档我们可能会找到: (…)来不使用 TypeScript 或第3方库编写代码。...在这些情况下,我们可能要选择退出类型检查。为此,我们将这些标记为 any 类型: 什么是 any 因此 any 不是通配符,也不是基类型,它是明确地与第三方库进行交互。那它为什么经常出现你呢?...但是等等我还有很多其他原因 TypeScript 不会转换为 Javascript 吗?Javascript 不是动态吗?那我为什么要考虑我类型呢? 是的!...有些参数很难正确输入,但是 any 更容易 如果我们没有正确地输入,我们将会编写错误,比我们在动态语言中会编写更多错误,因为我们强制 TypeScript ,一种静态类型语言,去检查不正确类型。...我已经通过必要运行时检查以防御性方式编写了代码,以确保没有错误 现在可能没有错误,但是除非你有很好测试覆盖率,否则以后来修改代码的人不会相信他们不是在错误重构;就好像编译器不会帮你,因为我们说过它不会帮你

1.1K21

【译】为什么要使用TypeScript

而这个版本Angular,将TypeScript推向了更高流行程度。尝试过程,我要做得第一步就是非常严格遵循所定义类型。...在代码,需要通过各种注释和Angular装饰器以便让TypeScript理解你代码。其中,any类型是我最好朋友。 最终,我放弃了。...在使用TypeScript时,我发现可以像使用JavaScript一样使用它。不会有对编译器抱怨,也不需要额外注释。...由于我们可以通过JavaScript做很多事情,因此TypeScript力求我们在代码尽可能完整编写所有的JavaScript代码结构类型。 这和TypeScript设计目标十分吻合: 渐进式。...TypeScript能够帮助你缩小可能类型范围。 紧跟ECMAScript标准。不会遇到未达到ECMAScript第3阶段功能特性。 类型系统。

59310

TS 这7个方法,你需要知道

TypeScript 类型系统是非常强大。它为我们提供了类型安全。类型系统虽然受人喜爱,但如果我们不规划和设计类型和接口,它也会让我们代码变得混乱难读。...泛型 避免代码重复,创建可重用类型,是我们编写简洁代码重要一环。泛型是 TypeScript 一个功能,它允许我们编写可重用类型。...Keys 必须是 Type ,否则TypeScript编译器会抱怨。当你想通过从有很多属性对象挑选某些属性来创建更轻对象时,这个实用类型特别有用。...Keys 不是说要保留哪些属性,而是指要省略属性集。 当我们只想从对象删除某些属性并保留其他属性时,这个会更有用。...Readonly Readonly 构建了一个类型,其类型所有属性被设置为只读。重新分配新 TS 就会报错。

59010

27 个问题,告诉你Python为什么这么设计

这不仅仅是由于缺少开始/结束括号 -- 缺少声明和高级数据类型也是其中原因 -- 但缩进基于语法肯定有帮助。 为什么简单算术运算得到奇怪结果? 请看下一个问题。 为什么浮点计算不准确?...任何动作都不会 8 更改为其他,在 Python ,任何动作都不会将字符串 "8" 更改为其他为什么必须在方法定义和调用显式使用“self”? 这个想法借鉴了 Modula-3 语言。...字典工作方式是使用 hash() 内置函数计算字典存储每个hash代码。...然后,hash代码用于计算内部数组中将存储该位置。假设您存储都具有不同hash,这意味着字典需要恒定时间 -- O(1),用Big-O表示法 -- 来检索一个。...为什么字典key必须是不可变? 字典哈希表实现使用从键值计算哈希来查找。如果是可变对象,则其可能会发生变化,因此其哈希也会发生变化。

6.7K11

你不知道 JSON.stringify

undefined、任意函数以及 symbol ,在序列化过程中会被忽略(出现在非数组对象属性时)或者被转换成 null(出现在数组时)。...// => undefined 这只影响到浏览器,因为document.all在其他环境是不可用,比如Node。 带有 toJSON 函数对象将被运行,而不是试图正常地序列化它们。...我还想提一下,TypeScript类型定义在这里是不正确。...例如,下面的代码类型校验可以通过: const result: string = JSON.stringify(undefined); 在第2部分,我们将讨论如何更新 TypeScript 定义以确保其正确性...return Object.prototype.toString.call(value); } } 关于TypeScript类型说明 如果你已经在用 TypeScript,可能会惊讶地发现,TypeScript

3.3K20

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

定义带有可选参数和默认参数函数。可选参数修饰符以及为参数分配默认。...在此示例,age 属性可以修改,但 name 属性是只读。 延伸阅读:TypeScript 官方手册——实用类型( 16.映射类型重新映射”和“重新映射”是什么?为每个提供示例。...回答:“重映射”和“重映射”是 TypeScript 映射类型两个特性。 “重新映射”允许您使用 as 关键字更改现有类型。...为什么它很有用?举个例子。 答案:TypeScript “noUncheckedIndexedAccess”编译器选项用于在使用索引访问属性时捕获潜在未定义或空。...33.什么是 TypeScript “条件类型”,它们为什么有用?

61630

TypeScript 4.4 RC版来了,正式版将于月底发布

} } 在以往 TypeScript 版本,这会触发一项错误——即使 argIsString 被分配到了类型守卫TypeScript 也只会丢失该信息。...以上示例不会引发任何错误!当 TypeScript 发现我们在测试某个常量值时,它会执行一些额外操作以查看其中是否包含类型守卫。...如此一来,我们就能将这些对象作为类似于字典类型,并在其中通过括号使用字符串对它们进行索引。...例如,我们可以编写一个带有索引签名类型,此类型接收 string 并映射为相应 boolean 。如果我们尝试分配 boolean 以外,则返回错误。...在 TypeScript 4.4 ,新标记 –exactOptionalPropertyTypes 负责强调完全按字面形式解释各个可选属性类型,也就是说 | undefined 不会被添加至类型当中

2.6K20
领券