在 TypeScript 中,as const 和 readonly 都用来声明只读属性。区别在于,as const 是一种更强的只读类型,它可以将联合类型上的所有成员都变成只读的。
下面为你提供了一个代码示例:
const arr = [1, 2, 3] as const;
const readonlyArr: ReadonlyArray = arr;
readonlyArr[0] = 4; // error!
arr[0] = 4; // error!
type Weekday = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday";
const weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] as const;
type ReadonlyWeekdayTuple = readonly [Weekday, Weekday, Weekday, Weekday, Weekday];
const readonlyWeekdays: ReadonlyWeekdayTuple = weekdays;
readonlyWeekdays[0] = "Sunday"; // error!
weekdays[0] = "Sunday"; // error!