as const 这种写法是js语法还是ts的呢?为什么会自懂加readonly?

const FormTypes = {
    personal: 'personal',
    survey: 'survey',
  } as const; 

/**
 * type const = {
    readonly personal: "personal";
    readonly survey: "survey";
} */  
阅读 1.9k
4 个回答

as const 是 TypeScript 的语法,被称为 "const assertion"。它把一个对象、数组或元组标记为只读(immutable),这意味着对象的属性、数组的元素或元组的元素都会被标记为只读(readonly)。这有助于在 TypeScript 中创建具有不可变性的值。

在你的例子中:

const FormTypes = {
  personal: 'personal',
  survey: 'survey',
} as const;

as const 会让 TypeScript 将 FormTypes 对象中的属性标记为只读(readonly)。这意味着,你不能对这些属性进行修改。此外,as const 还会让 TypeScript 为每个属性推断出一个更精确的类型,即它们的字面量类型,而不是一般的字符串类型。所以,FormTypes 的类型会被推断为:

{
  readonly personal: "personal";
  readonly survey: "survey";
}

这个特性在 TypeScript 中非常有用,特别是在定义配置对象、选项集或不可变数据时。

as const这种写法是ts语法
因为你加了as const所以推导出来就给你加了readonly

这种写法是Typescript的语法,用于定义只读枚举。通过as const将变量的值指定为只读的,在这种情况下,变量的类型将被推断为一个只包含只读属性的对象类型。因此,对该变量和它的属性进行修改操作时,将无法通过编译。可以将其用于类型安全的操作和防止不必要的状态更新。

as const 是 TypeScript 语法中的一个修饰符

要区别哪些特性是TS还是JS,最简单的方法就是打开
https://www.typescriptlang.org/

把TS代码复制进去,看右边生在的JS代码里有没有一样的关键字

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏