const FormTypes = {
personal: 'personal',
survey: 'survey',
} as const;
/**
* type const = {
readonly personal: "personal";
readonly survey: "survey";
} */
const FormTypes = {
personal: 'personal',
survey: 'survey',
} as const;
/**
* type const = {
readonly personal: "personal";
readonly survey: "survey";
} */
这种写法是Typescript的语法,用于定义只读枚举。通过as const将变量的值指定为只读的,在这种情况下,变量的类型将被推断为一个只包含只读属性的对象类型。因此,对该变量和它的属性进行修改操作时,将无法通过编译。可以将其用于类型安全的操作和防止不必要的状态更新。
as const 是 TypeScript 语法中的一个修饰符
要区别哪些特性是TS还是JS,最简单的方法就是打开
https://www.typescriptlang.org/
把TS代码复制进去,看右边生在的JS代码里有没有一样的关键字
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
as const 是 TypeScript 的语法,被称为 "const assertion"。它把一个对象、数组或元组标记为只读(immutable),这意味着对象的属性、数组的元素或元组的元素都会被标记为只读(readonly)。这有助于在 TypeScript 中创建具有不可变性的值。
在你的例子中:
as const 会让 TypeScript 将 FormTypes 对象中的属性标记为只读(readonly)。这意味着,你不能对这些属性进行修改。此外,as const 还会让 TypeScript 为每个属性推断出一个更精确的类型,即它们的字面量类型,而不是一般的字符串类型。所以,FormTypes 的类型会被推断为:
这个特性在 TypeScript 中非常有用,特别是在定义配置对象、选项集或不可变数据时。