介绍
考虑以下示例:
const organization = {} organization.name = "Logrocket"
这段看似无害的代码在动态分配时会引发 TypeScript 错误 name到 organization目的。
将属性动态分配给对象时引发错误
中的此示例 请参阅TypeScript Playground 。
如果您是 TypeScript 初学者,这也许是正确的,混淆的根源是:看起来如此简单的东西怎么会在 TypeScript 中成为这样的问题?
TL;DR 的全部内容是,如果你不能在声明时定义变量类型,你可以使用 Record实用程序类型或对象索引签名来解决这个问题。 但在这篇文章中,我们将探讨问题本身,并努力寻找在大多数情况下都可以使用的解决方案。
跳跃前进:
-
了解将属性动态分配给对象的问题
-
解决问题
-
解决方案 1:在声明时显式键入对象
-
解决方案 2:使用对象索引签名
-
解决方案 3:使用 Record实用类型
-
了解将属性动态分配给对象的问题
一般来说,TypeScript 在声明变量时确定变量的类型,并且该确定的类型不会改变,即在整个应用程序中始终保持不变。
此规则有一些例外情况,例如在考虑缩小类型或使用 any类型,但这是要记住的一般规则。
在前面的例子中,