如何在一行中初始化和 return 一个对象

How to initialize and return an object in a single line

我正在尝试基于以下类型化接口创建选项对象:

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

但是没用。

你可以使用打字稿 cast:

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

你快完成了:

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

更新:如您所知 - 第一个选项 (<Option>) 在 *.tsx[=25= 中产生歧义] 文件,所以 as 语法是首选。