我有困難提到Fable中的無參數函數。寓言F#到Javascript:無參數函數被給予參數時,被引用
有了這個例子:
let f1() =
1
let someRefTof1 = f1
我期望所產生的JS看起來是這樣的:
function f1() {
return 1;
}
var someRefTof1 = f1;
但我實際得到的是:
function f1() {
return 1;
}
var someRefTof1 = exports.someRefTof1 = function someRefTof1(arg00_) {
return f1(arg00_);
};
我不清楚arg00_
的目的或如何避免它產生?
(作爲比特背景的,我奮力調用在外部JS庫中的函數,其預期的功能,作爲一個參數被傳遞)
編輯:
背景
以上就是我認爲是一個最小的,可覈查的,再現我的問題,但是,評論後,我想這可能是有用的提供觸摸爲什麼這是造成問題的詳細內容。我真正想做的是使用Fable的angularjs。
所以我的例子看起來更像是這樣的:
let app = AngularFable.NgFable.angular.``module``("app",[||])
type TestCtrl() =
member this.Val1() = "boom";
app?controller("test", TestCtrl)
其被編譯到:
var app = exports.app = angular.module("app", []);
var TestCtrl = exports.TestCtrl = function() {
function TestCtrl() {
_classCallCheck(this, TestCtrl);
}
TestCtrl.prototype.Val1 = function Val1() {
return "boom";
};
return TestCtrl;
}();
_fableCore.Util.setInterfaces(TestCtrl.prototype, [], "App.TestCtrl");
app.controller("test", function (unitVar) {
return new TestCtrl();
});
與unitVar
是在這個例子中引入了有問題的參數。當我使用這在我的HTML的東西,如:
<div ng-app="app">
<div ng-controller="test as vm">
{{vm.Val1()}}
</div>
</div>
我碰上unknown provider錯誤而如果我只是改變編譯JavaScript從最後一行這樣刪除unitVar
參數:
app.controller("test", function() {
return new TestCtrl();
});
然後我的例子按預期工作。
我真的很想知道是否有以避免寓言編譯器生成該參數的方法。我99%肯定這減少了同樣的問題,在我原來的問題,但我已經包含這一附加背景下,以更好地解釋爲什麼這是一個問題
不確定這是否相關,但該函數並非真正無參數,它具有單個單元類型的單個參數。 –
是的,好點,但它預期地映射了原來的「無參數」功能 - 只是在參考該功能時出現問題 –
究竟是什麼問題?我能用'arg00_'看到的唯一問題是,如果將它傳遞給一些使用'f.length'獲取聲明數量的參數的javascript代碼,這是非常令人沮喪的做法。否則它不應該改變任何東西。 – Tarmil