まだ master にはマージしてないですが kazuho/user-defined-templates ブランチのやつを使うと、 class Adder.<T> { static function f(x : T, y : T) : T { return x + y; } } class Test { static function run() : void { var n = Adder.<number>.f(1, 3); log n; var s = Adder.<string>.f("abc", "def"); log s; } } が、最適化オプション (--optimize inline,fold-const) でコンパイル後に Test.run$ = function () { /** @type {!number} */ var n; /** @type {!string}