我正在使用以下代码。
type PersonRow = {
name: string;
email: string;
phone_number: string;
age: number;
}
const personColumnNames: (keyof Omit<PersonRow, 'age'>)[] = [
'name',
'email',
'phone_number'
];
但是,当我从personColumnNames中删除phone_number
时出现错误(如果将列添加到PersonRow类型)。
type PersonRow = {
name: string;
email: string;
phone_number: string;
age: number;
}
const personColumnNames: (keyof Omit<PersonRow, 'age'>)[] = [
'name',
'email'
];
修改:
这是我发现的一种骇人听闻的方式,但这似乎仍然不理想。
const personColumnNames = Object.keys(((): { [key in keyof Omit<PersonRow, 'age'>]: null } => ({
name: null,
email: null,
phone_number: null,
}))())
答案 0 :(得分:1)
要使用Typescript输入数组,您有两个选择。
常见的SomeType[]
表示“我有一个数组,并且该数组中的每个项目都是SomeType
。这对您不起作用,因为无法键入长度,并且每个项目都不能依赖于其他任何项目。
元组:[TypeA, TypeB, TypeC]
。这表示一个固定长度的数组,其中每个索引处的项目类型都是已知的。这对您不起作用,因为顺序很重要。我也不相信您可以使用动态长度创建此类型。
所以我不相信有一种方法可以做您想要的事情。而且,在不知道您打算如何使用此数组的情况下,很难提出替代方案。