2017-06-12 21 views
0

typescriptを使用して、 "Math.floor"や "console.log"のような文字列を関数Mathに変換する必要があります.floorおよびconsole.logを使用して、文字列パラメータとして渡されたときにこれらの関数を使用できるようにします。上Typescript - 文字列( "console.log")を関数(console.log)に変換する方法

例えば

applyFunction ("Math.floor", 4.2); // => Math.floor(4.2) => 4 
applyFunction ("console.log", "Hi"); // => console.log("Hi") => Hi 

そしてそう。

私はそれらをオブジェクトのキーと値として追加し、必要に応じてオブジェクトをスキャンしようとしました。しかし、既存のTypescript関数をすべて検索して追加する時間がないので、より包括的なアプローチを探しています。

答えて

2

FWIW eval()を使用すると、文字列をコードとして解析できます。

例:

eval("console.log('foo')")

言われていること、私はbe careful when using eval()にあなたをアドバイスしたいです。

+0

私にとっては、それは次のように働いた: eval( "console.log")( 'foo'); Thanx alot – TamerB

1

あなたが行うことができますブラウザを使用している場合:あなたが名前空間を反復処理することを確認してください

window['Math']['floor'](4.2); 
window['console']['log']('Hi'); 

を、evalの(文字列)がうまく機能。

+0

私は 'eval'を使用して以下の答えを投稿しましたが、この方が好きです。 –

+0

@NicholasKyriakides eval(string)は作業を良くしますが、これはブラウザの別のアプローチですが、あなたが名前空間を繰り返し処理する必要があるので難しい – Fals

+1

なぜ難しく、簡単に分割して減らすのですか – epascarello

関連する問題