mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
Add Readonly Examples
In references to #2702. Making another commit due to several extra files getting committed.
This commit is contained in:
parent
648fe48c5a
commit
f8ff01a17e
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user