Ini akan menyederhanakan banyak kasus penggunaan jika kita dapat mengesampingkan operator relasional, kesetaraan, aditif, dan Multiplicative.
Pikiran awal saya tentang cara kerjanya adalah bahwa fungsi akan menggantikan operator dengan fungsi saat mengkompilasi ke JavaScript.
class MyClass {
constructor() {
}
public Operator > (value: any):boolean {
// compare value
}
}
var myClass = new MyClass();
if(myClass > otherValue){
// Do stuff
}
Menjadi:
var MyClass = (function () {
function MyClass() {
}
MyClass.prototype.greaterThan = function (value) {
// compare value
};
return MyClass;
})();
var myClass = new MyClass();
if (myClass.greaterThan(otherValue) {
// do Stuff
}
Satu hal yang kami hindari adalah emisi yang digerakkan oleh tipe. Idenya adalah bahwa tipe TypeScript tidak memiliki pengaruh saat runtime - kodenya sedekat dengan JavaScript analog yang akan Anda tulis. Mengingat itu, mengganti panggilan metode untuk operator akan bertentangan dengan itu.
Selain itu, ini terkait dengan #2319, jadi saya akan menutup ini sebagai duplikat.
saya telah menulis kerangka kerja ORM di TypeScript. Masih baru dan hanya mendukung mysql saat ini. Arsitekturnya didasarkan pada kerangka entitas.
https://www.npmjs.com/package/es-entity
Mengaktifkan Operator Overloading akan mendukung pembuatan 'LINQ' seperti kueri.
Anda dapat menambahkan fitur ini sebagai ekstensi opsional seperti fitur Dekorator dengan implementasi eksperimental dan opsi kompiler. Berharap untuk melihat ini di TypeScript.
Komentar yang paling membantu
saya telah menulis kerangka kerja ORM di TypeScript. Masih baru dan hanya mendukung mysql saat ini. Arsitekturnya didasarkan pada kerangka entitas.
https://www.npmjs.com/package/es-entity
Mengaktifkan Operator Overloading akan mendukung pembuatan 'LINQ' seperti kueri.
Anda dapat menambahkan fitur ini sebagai ekstensi opsional seperti fitur Dekorator dengan implementasi eksperimental dan opsi kompiler. Berharap untuk melihat ini di TypeScript.