Typescript: オペレーターの過負荷

作成日 2015年10月26日  ·  3コメント  ·  ソース: microsoft/TypeScript

関係演算子、等式演算子、加法演算子、および乗法演算子をオーバーライドできれば、多くのユースケースが単純化されます。

これがどのように機能するかについての私の最初の考えは、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
}
Declined Duplicate Out of Scope

最も参考になるコメント

私はタイプスクリプトでORMフレームワークを書きました。 それはまだ新しく、現在mysqlのみをサポートしています。 そのアーキテクチャはエンティティフレームワークに基づいています。
https://www.npmjs.com/package/es-entity
演算子のオーバーロードを有効にすると、「LINQ」のようなクエリの作成がサポートされます。
この機能は、実験的な実装とコンパイラオプションを備えたデコレータ機能のようなオプションの拡張機能として追加できます。 これをtypescriptで見たいと思っています。

全てのコメント3件

私たちが避けていることの1つは、型駆動型の放出です。 TypeScriptタイプは実行時に関係がないという考え方です。コードは、作成した類似のJavaScriptに非常に近いものです。 それを考えると、演算子のメソッド呼び出しに置き換えることはそれに反します。

それとは別に、これは#2319に関連しているので、これを複製として閉じます。

私はタイプスクリプトでORMフレームワークを書きました。 それはまだ新しく、現在mysqlのみをサポートしています。 そのアーキテクチャはエンティティフレームワークに基づいています。
https://www.npmjs.com/package/es-entity
演算子のオーバーロードを有効にすると、「LINQ」のようなクエリの作成がサポートされます。
この機能は、実験的な実装とコンパイラオプションを備えたデコレータ機能のようなオプションの拡張機能として追加できます。 これをtypescriptで見たいと思っています。

私はtypescript( bluemath )でライブラリのようなnumpyを開発しています。 演算子のオーバーロードにより、 NDArrayクラスのインターフェイスが大幅に改善されます。

このページは役に立ちましたか?
0 / 5 - 0 評価