typescript - Vilken klass ärver ReadonlyArray?
Jag har detta kodavsnitt i TypeScript:
const arr: ReadonlyArray<string> = [
"123",
"234"
];
arr.push("345");
TS-kompilatorn visar ett fel:
Property 'push' finns inte på typen 'ReadonlyArray<string>'.
Självklart är det tydligt att jag inte kan ändra/ändra denna array. Frågan är: vad är basklassen för ReadonlyArray? Ärver den från standard Array-klassen?
Svar #1
https://www.typescriptlang.org/docs/handbook/interfaces.html anger att:
TypeScript levereras med en
ReadonlyArray<T>-typ som är samma somArray<T>men med alla muterande metoder borttagna, så att du kan försäkra dig om att du inte ändrar dina arrayer efter skapande
Om du vill ha källan, gå till:
https://github.com/Microsoft/TypeScript/blob/master/src/lib/es5.d.ts#L1121 (01.06.2022) - Sök efter "ReadonlyArray" om källfilen har utvecklats.
(dess definition finns på rad 1121 i den nuvarande versionen).