Kann jemand bitte erklären, warum ich nicht intellisense in 'setItem' Funktion für 'diese' Variable. Mein Verständnis sollte auf '_storageAdapter'-Eigenschaft beschränkt werden?TypeScript - 'Dies' ist standardmäßig 'any'
class TestClass {
private testOne =() => {
}
_storageAdapter: {
toType: (obj: any) => string,
getItem: (key: string) => void,
setItem: (key: string, value: string) => void,
}
= {
toType: (obj: any) => {
return "hello";
},
getItem: (key: string) => {
this.testOne() // this is class scoped;
},
setItem: function (key: string, value: any) {
this.toType(value); // this should be property scoped? but no intellisense? its just set to 'any'
}
}
}
Danke. Ich denke, mein Problem ist, dass es keine Möglichkeit gibt, die Build- oder Kompilierzeit zu überprüfen. Sie können this.ANYTHING in setItem eingeben und es bremst nur zur Laufzeit. Unabhängig davon, ob Sie einen Fettpfeil oder reguläre Funktionen verwenden, können Sie die interne Funktion innerhalb von _storageAdapter nicht außerhalb der _storageAdapter-Eigenschaft aufrufen. Bummeln – dotsa
Sie können eine Pfeilfunktion wie mit den anderen zwei verwenden, aber warum haben Sie nicht nur diese Funktionen als Klassenmethoden und Sie halten sie in diesem Objekt? –
Ja.Ich kann das zu einer Schnittstelle wahlweise und einer Klasse extrahieren. Ich habe nur versucht zu sehen, wie weit ich TS drücken kann, bevor es mir nicht stark typisierte Objekte und Intellisense geben wird. – dotsa