Engineering from Scratch

エンジニア目指してます

2022/07/21

readonly

readonly のチェックがされない時がある

const sum = (obj: { foo: number; bar: number; baz: number }) => {
  obj.foo = 999999;

  return obj.foo + obj.bar + obj.baz;
};

const myObj = {
  foo: 0,
  bar: 100,
  baz: 1000,
} as const;

sum(myObj); ← sum内でfooの書き換えが行われているのに,コンパイルエラーとならない

配列における readonly

const sum = (arr: number[]) => {
  return arr.reduce((a, b) => a + b, 0);
};

const myArr = [1, 2, 3, 4] as const;

sum(myArr); ← sum内でarrの書き換えは行わないのに,readonlyに関してのコンパイルエラーとなる

参考

https://qiita.com/uhyo/items/0fd033ff1aed9b4b32dd