有 as const的情况:

const formFields = {
  level: 'level',
  deadline: 'deadline',
  title: 'title',
  content: 'content',
  users: 'users',
} as const;
 
使用 `as const`后,TypeScript 会推断出这个对象的每个属性都是​**​只读的(readonly)​**​,并且每个属性的值都是具体的字面量值(如 `'level'`而不是 `string`)。
类型推断结果为:
    
{
  readonly level: "level";
  readonly deadline: "deadline";
  readonly title: "title";
  readonly content: "content";
  readonly users: "users";
}
    
这样,在定义 `FormFields`类型时,`[formFields.level]`等索引类型访问会得到确切的字面量类型(如 `"level"`),从而确保类型定义的一致性。

没有 as const的情况:

const formFields = {
  level: 'level',
  deadline: 'deadline',
  title: 'title',
  content: 'content',
  users: 'users',
};
没有 `as const`,TypeScript 会推断出每个属性的类型为 `string`(因为默认情况下 TypeScript 会推断出最通用的类型)。
类型推断结果为:
{
  level: string;
  deadline: string;
  title: string;
  content: string;
  users: string;
}