如何在一行中初始化和 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
语法是首选。
我正在尝试基于以下类型化接口创建选项对象:
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
语法是首选。