0

次の型付きインターフェイスに基づいて Option オブジェクトを作成しようとしています:

interface Option {
    /** Text for rendering */
    label: string;
    /** Value for searching */
    value: string | number;
    /**
     * Allow this option to be cleared
     * @default true
     */
    clearableValue?: boolean;
}

以下を1行に変換することはできますか?

const options = [1, 2, 3].map<Option>((t) => {
    const option: Option = { label: String(t), value: String(t) };
    return option;
});

私は試した:

const options = [1, 2, 3].map<Option>((t) => Option = { label: String(t), value: String(t) });

しかし、うまくいきません。

4

2 に答える 2

1

あなたはもうすぐそこにいます:

const options = [1, 2, 3].map(t => <Option>{ label: String(t), value: String(t) });

型アサーションは、演算子<Option>{ label: String(t), value: String(t) }でも実行できます。ast => ({ label: String(t), value: String(t) }) as Option

更新: 既にわかっているように、最初のオプション ( <Option>) は*.tsxファイルにあいまいさを作成するため、as構文が優先されます。

于 2016-11-02T06:53:36.147 に答える
0

タイプスクリプトキャストを使用できます:

const options = [1, 2, 3].map<Option>((t) => <Option>{ label: String(t), value: String(t) } );
于 2016-11-02T06:53:34.183 に答える