打字稿中的联合类型?

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" }]
}