我正在尝试创建基于以下类型接口的选项对象:
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) } );