设置传递给函数的参数的对象属性的默认值

IT技术 javascript reactjs typescript
2021-05-27 06:56:58

这个问题的主要区别是我希望在对象内部引用我的属性,而不是解构。

export interface MapSettings {
  up: 'trueNorth' | 'runIn' | 'magneticNorth' | 'user';
  rotation?: number;
}

type MapProps = {
  settings: MapSettings;
};

export const Map: FunctionComponent<MapProps> = function Map({
  settings,
}) {

我想为其设置一个默认值,settings.rotation但我也想保留它的引用,settings.rotation因为设置的属性比此处显示的要多得多,而且我知道该值的来源。

这是我能想到的最佳答案:

export const Map: FunctionComponent<MapProps> = function Map({
  settings: { rotation: settingsRotation = 360, ...settings },
}) {

但它不允许我settings.rotation使用默认值360.

2个回答

只需检查并设置它:

export const Map: FunctionComponent<MapProps> = function Map({
  settings,
}) {
  settings.rotation = (settings.rotation || settings.roation === 0) ? settings.rotation : 360

默认值被提及为{ someKey = 'defaultValue' }`{ someKey: 'defaultValue' } 的 insead

所以你可以这样写

{
   settings = { rotation: settingsRotation = 360 },
}