如何在一行中初始化和返回对象

How to initialize and return an object in a single line

本文关键字:初始化 返回 对象 一行      更新时间:2023-09-26

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

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

I tried:

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

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

可以使用typescript强制转换:

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