打字稿中的联合类型?
Union type in Typescript?
为什么 TypeScript 不允许这种类型定义?
type profileType = 'TEACHER' | 'PRINCIPAL';
interface FormList {
[ key: profileType ] : IForm[];
}
let forms: FormList;
forms = {
'TEACHER' : [{ id: 1, name: "o" }, { id: 1, name: "b" }]
}
它调用行中的错误:[ key: profileType ] : IForm[];
。
您可以将字符串文字从联合映射到新类型。这在打字稿中称为 mapped type:
type IForm = {};
type ProfileType = 'TEACHER' | 'PRINCIPAL';
type FormList = { [P in ProfileType]: IForm[] };
let forms: FormList;
forms = {
'TEACHER': [{ id: 1, name: "o" }, { id: 1, name: "b" }],
'PRINCIPAL': [{ id: 1, name: "o" }, { id: 1, name: "b" }]
}
为什么 TypeScript 不允许这种类型定义?
type profileType = 'TEACHER' | 'PRINCIPAL';
interface FormList {
[ key: profileType ] : IForm[];
}
let forms: FormList;
forms = {
'TEACHER' : [{ id: 1, name: "o" }, { id: 1, name: "b" }]
}
它调用行中的错误:[ key: profileType ] : IForm[];
。
您可以将字符串文字从联合映射到新类型。这在打字稿中称为 mapped type:
type IForm = {};
type ProfileType = 'TEACHER' | 'PRINCIPAL';
type FormList = { [P in ProfileType]: IForm[] };
let forms: FormList;
forms = {
'TEACHER': [{ id: 1, name: "o" }, { id: 1, name: "b" }],
'PRINCIPAL': [{ id: 1, name: "o" }, { id: 1, name: "b" }]
}