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