2016-03-30 22 views
0

私はこれについて最善の方法を見つけようとしています。私はライブラリをtypescriptに変換しています。これまでにあった1つの特定の問題にぶつかっています。定義は、問題は、それがタイプ(string | string[])であるので、私は配列にpathパラメータを変換することはできませんで、このTypescriptの文字列と文字列配列をパラメータとして受け入れる

public execute(path: string | string[]): Promise<Object> { 
    if (typeof path == "string") { 
    // Turn the string into an array 
    } 
} 

のようなビットに見えるだ機能があります。これをやろうとしても失敗します。

public execute(path: string | string[]): Promise<Object> { 
    newPath: string[]; 
    if (typeof path == "string") { 
    newPath = [path]; 
    } else { 
    newPath = path; 
    } 
} 

パスタイプ(string | string[])であり、string[]を入力するように割り当てることができないので。どんな解決策ですか?

+0

'path:any' - 確認しますか? – tymeJV

+0

@tymeJV 'any'は汚れていると感じて、ヒントのタイプについては何の助けもしません – watzon

答えて

0

私は実際にそれを理解しました。 typecastingで組み込みTypescriptsを使用する場合、非常に簡単なソリューションです。

public execute(path: string | string[]): Promise<Object> { 
    if (typeof path == "string") { 
    path = <string[]>[path]; 
    } 
} 

ブーム!エラー

0

あなたが実際にtype guardsを使用して、型アサーション(鋳造)を使用せずにこれを行うことができます。この例では

public execute(path: string | string[]): Promise<Object> { 
    let newPath: string[]; 
    if (typeof path === "string") { 
    newPath = [path]; 
    } else { 
    newPath = path; 
    } 
} 

を、活字体がそう、ちょうどstring場合はブロック内にstring | string[]からpathの種類を狭めますタイプアサーションは必要ありません。

関連する問題