2016-07-22 16 views
2

オプションの引数を取得できないようですが、TypeScriptの構造化されていない引数で動作します。TypeScriptとオプションの非構造化引数

正しいコードが引数として生成されますが、Typescriptは生成された変数をコード内で使用して目的を破棄することはできません。

何か間違っていますか?

declare var lastDirectionWasDownish : boolean; 

function goToNext(
    { 
     root: Node = document.activeElement, 
     actLikeLastDirectionWasDownish:boolean = lastDirectionWasDownish 
    } = {} 
) { 
    return root && actLikeLastDirectionWasDownish; 
} 

function goToNext(_a) { 
    var _b = _a === void 0 ? {} : _a, _c = _b.root, Node = _c === void 0 ? document.activeElement : _c, _d = _b.actLikeLastDirectionWasDownish, boolean = _d === void 0 ? lastDirectionWasDownish : _d; 
    return root && actLikeLastDirectionWasDownish; 
} 

答えて

4

活字体にコンパイル実際には純粋なJSで欠場だろう間違いを犯してからあなたを妨げている。ここでの減少です。以下の純粋なJS:

function foo({root: Node}) { 
    // the parameter `root` has been copied to `Node` 
} 

活字体はこのことを理解し、あなたがNodeを使用することはできません。あなたが実際に型注釈を追加するでしょう:

function foo({root}: {root: Node}) { 
    // now you can use `root` and it is of type Node 
} 

修正

をあなたは

function foo({root = document.activeElement } : {root: Node}) { 
    root;// Okay 
} 
+0

感謝をしたい、それは私が探していたものと思われます。それはもう少し繰り返され、冗長ですが、うまくいきます! – FremyCompany

+0

JavaScriptはオブジェクトリテラル(構造化)の代入に '='の代わりに ':'を選択しました。それはまた、破壊のために再利用されました。だから私たちには、明確な方法でプラグインするのではないので、定義のために外部に ':'があります。 – basarat

関連する問題