2013-12-08 46 views
2

如果我使用保留關鍵字(如deletecontinue)作爲Typescript類中的方法名稱,那麼我遇到了IE8的問題。使用保留關鍵字作爲Typescript中的類/實例的方法

例如:

class Foo { 
    delete() : void { 
     console.log('Delete called'); 
    } 

    continue() : void { 
     console.log('Continue called'); 
    } 
} 

生成以下的javascript:

var Foo = (function() { 
    function Foo() { 
    } 
    Foo.prototype.delete = function() { 
     console.log('Delete called'); 
    }; 

    Foo.prototype.continue = function() { 
     console.log('Continue called'); 
    }; 
    return Foo; 
})(); 

然而,這不與飛IE8很好。 IE8寧願這個代替:

var Bar = (function() { 
    function Bar() { 
    } 
    Bar.prototype['delete'] = function() { 
     console.log('Delete called'); 
    }; 

    Bar.prototype['continue'] = function() { 
     console.log('Continue called'); 
    }; 
    return Bar; 
})(); 

有沒有辦法在保持我的代碼IE8,很乖,我可以保留打字稿的類型化的善良?

在我的具體情況下,我正在嘗試編寫一個實現ng.IHttpService interface的類,因此需要將delete作爲實例方法。

回答

5
class Foo { 
    "delete"() : void { 
     console.log('Delete called'); 
    } 

    "continue"() : void { 
     console.log('Continue called'); 
    } 
} 

轉化爲

var Foo = (function() { 
    function Foo() { 
    } 
    Foo.prototype["delete"] = function() { 
     console.log('Delete called'); 
    }; 

    Foo.prototype["continue"] = function() { 
     console.log('Continue called'); 
    }; 
    return Foo; 
})(); 

請注意,我從來沒有使用過的打字稿。我剛剛去了他們的網站,快速瀏覽了PDF規範,發現可以使用字符串文字,並在TypeScript遊樂場中試用它。

+0

不錯!我會測試它是否仍然正確地實現接口。 –

+0

是的,這仍然滿足'執行ng.IHttpService'要求。 –

+0

很高興工作。 –

相關問題