我对组件的输入是这样声明的。
@Input() rows: (string | number)[][];
我知道这是一个闪灯(例如,string
或number
)的数组。因此,数据是一个二维矩阵,带有闪烁器(浮点数,但在我看来不是)。
意识到不是每一行都有相同的元素计数,所以我不得不将矩阵重新整理成字典,即对象数组(其中对象具有我们一无所知的属性,只不过这些对象是闪烁灯) 。这是我的最佳尝试。
@Input() rows: { [key: string]: (string | number) }[];
虽然计算机似乎接受它,但我担心两件事。第一个是语法错误,而且由于测试不佳,我只是不知道这个问题。第二个原因是,无论正确性如何,我都创造了一个残酷的谜团,任何人都不应该看到(即,存在一种表达同一数据结构的完美方法)。
与建议的类型相比,如何以一种更好的方式声明上述类型?
答案 0 :(得分:3)
在我看来,这是有效的TypeScript。如果您是我,我将清理类型,以便声明一个可以在其他组件中重用的接口(如果决定进一步传递它,则父级(可能是输入的源)或子级(可能是子级)? )。
export interface Row {
[key: string]: string | number;
}
然后,在组件本身内,您可以导入接口并使用它来声明输入类型。
@Input() rows: Row[];
@aleksayl。建议的另一种方法是像这样从TS应用默认的GP类型。
Record<string, string | number>[]
答案 1 :(得分:-1)
您的代码非常好,不用担心。但是,将模型移入接口是一个好主意,例如:
interface Row {
[key: string]: string | number;
}
请注意:如果您的编译器/编译器将其视为有效的Typescript,那么语法就不能“简单地出错”-但这并不总是意味着没有更好的方法。