Lassen Sie sagen, wir haben diesen Code:unterstützte Typen in Funktionen
class MyEvent {
timestamp:number;
}
class AEvent extends MyEvent{
x:number;
y:number;
}
class BEvent extends MyEvent{
key:string;
}
var fn:(event:MyEvent)=>void;
function AE(event:AEvent){
let x = event.x; //Ok, but BEvent hasn't 'x' property.
}
fn = AE;
fn(new BEvent());
Typoskript informiert nicht über Fehler. Für Typoskript ist es ein gültiger Code. Ich habe es in Typoskript Spielplatz versucht. (1.8 Version)
Wie erzwinge ich Typoskript, um es zu verbieten?
Zum Beispiel in C++
class Base {
public:
int timestamp;
};
class B: public Base {
public:
char key;
};
class A: public Base {
public:
int x;
int y;
};
void fA(A *ptr) {}
void (*fn)(Base *ptr);
int main()
{
A *a = new A();
B *b = new B();
fn = fA; //error: invalid conversion from 'void (*)(A*)' to 'void (*)(Base*)'
fn(b);
}
Gute Antwort. Ich folgerte, dass mein Fall ist "einige Laufzeitfehler können in seltenen Fällen auftreten." – Oleg