我正在尝试基于以下类型化接口创建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) });
但它没有用。
答案 0 :(得分: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
更新:正如您已经发现的那样 - 第一个选项(<Option>
)会在 * .tsx 文件中产生歧义,因此{{ 1}}语法是首选。
答案 1 :(得分:0)
您可以使用打字稿{{3}}:
const options = [1, 2, 3].map<Option>((t) => <Option>{ label: String(t), value: String(t) } );