#TypeScript [[ReadonlyArray]]と[[読み取り専用プロパティ (TypeScript)|読み取り専用プロパティ]]は似ているようだが、[[ReadonlyArray]]の方が代入が厳しい。 ```ts let writableArray = ["a", "i", "u"]; let readonlyArray: ReadonlyArray<string> = ["a", "i", "u"]; readonlyArray = writableArray; // 可変なものを不変なものに代入はできる writableArray = readonlyArray; // 不変なものを可変なものに代入はでいない // The type 'readonly string[]' is 'readonly' and cannot be assigned to the mutable type 'string[]'.(4104) // --- readonlyプロパティの場合は相互に代入可能 let writableHuman: { name: string } = { name: "writable" }; let readonlyHuman: { readonly name: string } = { name: "readonly" }; readonlyHuman = writableHuman; writableHuman = readonlyHuman; ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/DYUwLgBA7gTglmAhgI1AQRjRBPCBeCAbQCJFiAaCYuCqgV2IF0BuAKFEhhEQBMB7AHbBsGLNgBcEAErd+QkZhwAeAM5h4AgOYA+fEVK1qhhi1asuvQcNE49sBCnSLszCAHo3EQPfKgSE1AVgyAQQyAdgyASQyAsHL+wYDWDIDHcoCmioD2DIDmDICyDIDRDKz2SKggNrgEFnLWzq4eEBGBob6VsYlJgCIMfvWsZQAqABYgEGDYAA5dAOSFVrhqGpqEjAMQcCoQQ7Ij04gCPBAAxisCfJDIXYgqKnCaAiBrYHzdnRAAtnTZoN19g2NwWpMDAHQAFAAsAIwABl+AEozGUALRQiDDeSAdYZALcMgEWGQBjDIBihiCgBYNQAQKglAB9ugCS5WpeQC-AWYONB4A8QAAJOg3FaSADeEAEiBuIEkry0EAAvnoWWyOZJiFlHCBiHy2BTYcI6QyBMyYYt5Kz2ZyINzNHyBWrhVRZdhJby2OYVXL6Ss7FTxfKVmwxTk7QI9IbnWwgA">Playground</a></button>