関係演算子、等式演算子、加法演算子、および乗法演算子をオーバーライドできれば、多くのユースケースが単純化されます。
これがどのように機能するかについての私の最初の考えは、JavaScriptにコンパイルするときに、関数が演算子を関数に置き換えるということです。
class MyClass {
constructor() {
}
public Operator > (value: any):boolean {
// compare value
}
}
var myClass = new MyClass();
if(myClass > otherValue){
// Do stuff
}
になる:
var MyClass = (function () {
function MyClass() {
}
MyClass.prototype.greaterThan = function (value) {
// compare value
};
return MyClass;
})();
var myClass = new MyClass();
if (myClass.greaterThan(otherValue) {
// do Stuff
}
私たちが避けていることの1つは、型駆動型の放出です。 TypeScriptタイプは実行時に関係がないという考え方です。コードは、作成した類似のJavaScriptに非常に近いものです。 それを考えると、演算子のメソッド呼び出しに置き換えることはそれに反します。
それとは別に、これは#2319に関連しているので、これを複製として閉じます。
私はタイプスクリプトでORMフレームワークを書きました。 それはまだ新しく、現在mysqlのみをサポートしています。 そのアーキテクチャはエンティティフレームワークに基づいています。
https://www.npmjs.com/package/es-entity
演算子のオーバーロードを有効にすると、「LINQ」のようなクエリの作成がサポートされます。
この機能は、実験的な実装とコンパイラオプションを備えたデコレータ機能のようなオプションの拡張機能として追加できます。 これをtypescriptで見たいと思っています。
最も参考になるコメント
私はタイプスクリプトでORMフレームワークを書きました。 それはまだ新しく、現在mysqlのみをサポートしています。 そのアーキテクチャはエンティティフレームワークに基づいています。
https://www.npmjs.com/package/es-entity
演算子のオーバーロードを有効にすると、「LINQ」のようなクエリの作成がサポートされます。
この機能は、実験的な実装とコンパイラオプションを備えたデコレータ機能のようなオプションの拡張機能として追加できます。 これをtypescriptで見たいと思っています。