javascript - Typescript 中有多少类型声明才足够?
问题描述
我目前正在更多地使用 Typescript,并且到目前为止非常喜欢它。最近我想知道“多少”类型声明就足够了。
假设我们想要构建一个对象数组,它非常复杂并且包含更深层次的嵌套属性。例如,一个对象包含大约 50 个键。所有对象都有相同的结构。
声明类型是由对象组成的数组是否“足够”,或者是否应该声明一个对象的每个不同键值对的类型?
类型推断将不起作用,因为 Array 未在同一行上声明和初始化。
就我个人而言,我会说第二个想法是无稽之谈,因为它很复杂,但我很想听听社区如何处理这些案例 :-)
我对你的回答很兴奋。
解决方案
声明该类型是由对象组成的数组是否“足够”,还是应该声明一个对象的每个不同键值对的类型?
通常,不,这还不够。如果这 50 个键是具有特定和唯一含义的键的有限列表,并且应用程序的其他部分需要存在,那么绝对应该声明这些键。
例如:
interface MyObject {
a: number
b: number
c: string
// etc...
}
const myArray: MyObject[] = []
myArray.push({ a: 1, b: 2, c: 'three' })
声明 50 个属性可能需要大量输入,但如果每个属性都有特定的含义,那么为类型系统记录这些内容非常重要,这样您的应用程序就可以被 typescript 编译器验证为类型安全。
请注意,这也为您(开发人员)提供了生活质量功能,例如在您的编辑器中自动完成属性名称。
但是,如果您的对象只是字典并且您不提前知道它们的键,那么使您的类型适合该用例:
type MyObject = { [key: string]: number }
const myArray: MyObject[] = []
myArray.push({ a: 1, b: 2, c: 3, whoknowswhatkey: 456 })
推荐阅读
- mongodb - Mongodb收集对象总小时收集
- python - 如何配置 Flask Mail 以使用 Postfix
- python - 在 pandas seaborn 中制作堆叠条形图
- c# - 如何使用 Json (C#) 从 URL API 检索字符串值?
- sh - Raspberry Pi 在自动启动时不运行脚本
- linux - 我可以在不使用 mmap 的情况下防止文件页面驱逐吗?
- angular - 按下 Chrome 调试工具旋转到横向按钮时,Angular 组件会重新加载
- java - 错误“不兼容的操作数类型 Module.Category 和 ULocale.Category”
- elasticsearch - 带有传递参数的 Elasticserach sql 查询,因此我们可以防止 sql 注入
- function - 使用 PowerShell 对象和参数