首页 > 解决方案 > Typescript 中有多少类型声明才足够?

问题描述

我目前正在更多地使用 Typescript,并且到目前为止非常喜欢它。最近我想知道“多少”类型声明就足够了。

假设我们想要构建一个对象数组,它非常复杂并且包含更深层次的嵌套属性。例如,一个对象包含大约 50 个键。所有对象都有相同的结构。

声明类型是由对象组成的数组是否“足够”,或者是否应该声明一个对象的每个不同键值对的类型?

类型推断将不起作用,因为 Array 未在同一行上声明和初始化。

就我个人而言,我会说第二个想法是无稽之谈,因为它很复杂,但我很想听听社区如何处理这些案例 :-)

我对你的回答很兴奋。

标签: javascriptarraystypescript

解决方案


声明该类型是由对象组成的数组是否“足够”,还是应该声明一个对象的每个不同键值对的类型?

通常,不,这还不够。如果这 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 })

推荐阅读