diff options
author | Wayne Boka <boka.wayne@gmail.com> | 2018-10-03 16:23:54 -0400 |
---|---|---|
committer | Wayne Boka <boka.wayne@gmail.com> | 2018-10-03 16:23:54 -0400 |
commit | f8ff01a17eff289e6e5e84a129dd29fa9a8bcdff (patch) | |
tree | a1a1ccd21375be4904965ac968ab5f5b4c36e9df /typescript.html.markdown | |
parent | 648fe48c5a0e4a19b61aff99515c576affb11777 (diff) |
Add Readonly Examples
In references to #2702. Making another commit due to several extra files getting committed.
Diffstat (limited to 'typescript.html.markdown')
-rw-r--r-- | typescript.html.markdown | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/typescript.html.markdown b/typescript.html.markdown index acc258b4..db6579e2 100644 --- a/typescript.html.markdown +++ b/typescript.html.markdown @@ -178,6 +178,37 @@ let greeting = `Hi ${name}, how are you?` let multiline = `This is an example of a multiline string`; +// READONLY: New Feature in TypeScript 3.1 +interface Person { + readonly name: string; + readonly age: number; +} + +var p1: Person = { name: "Tyrone", age: 42 }; +p1.age = 25; // Error, p1.x is read-only + +var p2 = { name: "John", age: 60 }; +var p3: Person = p2; // Ok, read-only alias for p2 +p3.x = 35; // Error, p3.x is read-only +p2.x = 45; // Ok, but also changes p3.x because of aliasing + +class Car { + readonly make: string; + readonly model: string; + readonly year = 2018; + + constructor() { + this.make = "Unknown Make"; // Assignment permitted in constructor + this.model = "Unknown Model"; // Assignment permitted in constructor + } +} + +let numbers: Array<number> = [0, 1, 2, 3, 4]; +let moreNumbers: ReadonlyArray<number> = numbers; +moreNumbers[5] = 5; // Error, elements are read-only +moreNumbers.push(5); // Error, no push method (because it mutates array) +moreNumbers.length = 3; // Error, length is read-only +numbers = moreNumbers; // Error, mutating methods are missing ``` ## Further Reading |