我的界面类型为:
interface IForm {
id: number;
name: string;
}
我需要编写自定义type
来存储该对象:
let a = ["one": [IForm, IForm, IForm], "two": [IForm, IForm, IForm]]
如何在TypeScript中构建它?
结果我需要按键获取所有表格吗?
let forms = a["one"]; --> [IForm, IForm, IForm]
forms[0]; --> IForm
答案 0 :(得分:1)
您可以使用映射类型:
type FormList = { [name: string]: IForm[]; };
或者如果"one"
和"two"
是固定属性,只需:
interface FormList {
one: IForm[];
two: IForm[];
}
此定义表示属性one
和two
始终存在。如果没有,您可以将它们设为可选:
interface FormList {
one?: IForm[];
two?: IForm[];
}
答案 1 :(得分:1)
如果值是任意长度的数组并且键是固定的,则可以使用具有这些特定字段的接口
interface FormList [
one: IForm[];
two: IForm[];
}
如果每个数组中的项目数始终为3,则可以使用元组类型[IForm, IForm, IForm]
interface FormList [
one: [IForm, IForm, IForm];
two: [IForm, IForm, IForm];
}
如果要允许使用任何密钥,可以使用索引签名
interface FormList {
[key: string] : [IForm, IForm, IForm];
}