[TypeScript] ちょっとしたこと。

■関数の引数と戻り値の書き換え制限表現
function processData(
  a: User[],           // [1] 可変: Userも配列もOK
  b: readonly User[],  // [2] 完全不変: Userも配列もNG
  c: Readonly<User>[], // [3] 要素不変: UserはNG、配列はOK
): User[]           // [1]と同じ
): readonly User[]  // [2]と同じ
): Readonly<User>[] // [3]と同じ

readonly - TypeScript 2.0 2016/09, 3.4 20219/03
Readonly - TypeScript 2.1 2016/12