2017-12-03 14 views
0
//ts code 
function div(props?: { id?: String; style?: any }) { 
     return function(...children: ReactNode[]) { 
     return createElement("div", props, ...children); 
     }; 
    } 
const d = div({ id: "hello" })("welcome to TS"); 

生成されたJSコードtypescriptコンパイラーは@inline関数のオプションを持っていますか?

var d = createElement("div",{ id: "hello" },"welcome to TS") 

はtypescriptですサポート@inline機能しませ達成しようとし

function div(props) { 
    return function() { 
     var children = []; 
     for (var _i = 0; _i < arguments.length; _i++) { 
      children[_i] = arguments[_i]; 
     } 
     return createElement("div",props,...); 
    }; 
} 
var d = div({ id: "hello" })("welcome to TS"); 

//?どのような場合でも同様の方法で最良の方法が得られます。

+2

いや、活字体でインライン関数のサポートはありませんが、あなたが最適化、または手のコードを、それをあなたが望む方法を行うためにJSランタイムを信頼する必要があります。 –

+1

前のコメントに追加するには、[JavaScriptエンジンの自動インライン化](https://ariya.io/2013/04/automatic-inlining-in-javascript-engines)を読んでください---コードがWASM(WebAssembly)をチェックアウトする必要があるような細部を手作業で最適化したいので、これはまさにそのユースケースの1つです([YouTube:Dan Callahan:Practical WebAssembly | JSConf Budapest 2017](https://www.youtube。 com/watch?v = bac0dGQbUto) - 最初の15分をスキップします)。 –

+0

情報ありがとうございました:) – invariant

答えて

1

タイピングスクリプトは@inline関数をサポートしていますか?

ない場合は最良の方法は

同様の達成をいただきました!あなたはツールを自分で記述する必要があります。私はそれについて心配しないだろう。

自身が

インラインしたい関数への参照を見つけるために、活字体のコンパイラを使用して、その場所に関数本体を補間するツールを作成します。

スタート:一部のコンパイラのドキュメントhttps://basarat.gitbooks.io/typescript/content/docs/compiler/overview.html

+0

返信ありがとう、記事/チュートリアル/ドキュメントにリンクして、同様のことを達成する方法を教えてください。このユースケースには役に立たないものの、将来的にはさまざまなニーズに出会うかもしれません。 。 – invariant

+0

その詳細情報を追加しました – basarat

関連する問題