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;
}

是否可以将以下内容转换为单行?

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) }也可以用as操作符来完成:t => ({ label: String(t), value: String(t) }) as Option

更新:正如您已经发现的那样 - 第一个选项 ( ) 在*.tsx文件<Option>中产生歧义,因此首选语法。as

于 2016-11-02T06:53:36.147 回答
0

您可以使用 typescript cast

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