與構(gòu)造簽名的接口如何工作?我在解決界面中定義構(gòu)造函數(shù)的工作方式時遇到了一些麻煩。我可能完全誤解了一些事情。但是我已經(jīng)尋找了很長一段時間的答案,我找不到與此相關(guān)的任何內(nèi)容。如何在TypeScript類中實現(xiàn)以下接口:interface MyInterface {
new ( ... ) : MyInterface;}Anders Hejlsberg在此視頻中創(chuàng)建了一個包含類似內(nèi)容的界面(大約14分鐘)。但對于我的生活,我無法在課堂上實現(xiàn)這一點。我可能誤解了一些事情,我沒有得到什么?編輯:澄清。用“new(...)”我的意思是“任何東西”。我的問題是我無法得到這個工作的最基本版本:interface MyInterface {
new () : MyInterface;}class test implements MyInterface {
constructor () { }}這不是為我編譯我得到“類'測試'聲明接口'MyInterface'但沒有實現(xiàn)它:類型'MyInterface'需要一個構(gòu)造簽名,但類型'test'在嘗試編譯它時缺少一個。編輯:因此,在研究了這一點后,給出了反饋意見。interface MyInterface {
new () : MyInterface;}class test implements MyInterface {
constructor () => test { return this; }}是無效的TypeScript,這不能解決問題。您無法定義構(gòu)造函數(shù)的返回類型。它將返回“測試”。下面的簽名:class test {constructor(){}}似乎是“new()=> test”(通過將“代碼”粘貼在在線編輯器中,將鼠標(biāo)懸停在“class”上獲得)。這就是我們想要的和我認為的。任何人都可以在實際編譯時提供此類或類似的示例嗎?編輯(再次......):所以我可能想出了為什么可以在接口中定義它但不能在TypeScript類中實現(xiàn)的想法。以下工作:var MyClass = (function () {
function MyClass() { }
return MyClass;})();interface MyInterface {
new () : MyInterface;}var testFunction = (foo: MyInterface) : void => { }var bar = new MyClass();testFunction(bar);那么這只是TypeScript的一個功能,可以讓你接口javascript嗎?或者是否可以在TypeScript中實現(xiàn)它而無需使用javascript實現(xiàn)類?
與構(gòu)造簽名的接口如何工作?
縹緲止盈
2019-08-26 18:45:51