【问题标题】:replacing enum - better solution needed替换枚举 - 需要更好的解决方案
【发布时间】:2021-07-07 09:53:45
【问题描述】:

我有一个使用 React Native 的 Native Module 的应用。
目前的逻辑是数据类型将从我的枚举中获取,如下所示

export declare enum HKQuantityTypeIdentifier {
    HeartRate = "HKQuantityTypeIdentifierHeartRate"
  }


const requestAuthorization = (
    read: (HKQuantityTypeIdentifier)[],
    write: HKQuantityTypeIdentifier[] = []
  ): Promise<boolean> => {
    const readAuth = read.reduce((obj, cur) => {
      return { ...obj, [cur]: true };
    }, {});
  
    const writeAuth = write.reduce((obj, cur) => {
      return { ...obj, [cur]: true };
    }, {});
  
    return NativeModule.requestAuthorization(writeAuth, readAuth);
  };

  const MyHealthLibrary: ReactNativeHealthkit = {
    requestAuthorization
  }

  export default MyHealthLibrary;
  

前端调用:

await MyHealthLibrary.requestAuthorization([HKQuantityTypeIdentifier.HeartRate]); 

这将给出我的预期结果

现在我不想使用整个类型“HKQuantityTypeIdentifier.HeartRate”从我的前端调用该函数,而我只想像“HeartRate”一样调用它。如下所示:

await MyHealthLibrary.requestAuthorization(["HeartRate"]); 

我如何做到这一点???任何帮助都会很棒!

【问题讨论】:

    标签: javascript ios reactjs typescript react-native


    【解决方案1】:

    我不明白您对枚举的问题,但您可以通过这种方式轻松做到这一点:

    
    export type HKQuantityTypeIdentifier = 'HKQuantityTypeIdentifierHeartRate' | 'HKQuantityTypeIdentifierOtherData';
    
    const requestAuthorization = (
        read: (HKQuantityTypeIdentifier)[],
        write: HKQuantityTypeIdentifier[] = []
      ): Promise<boolean> => {
    

    【讨论】:

      【解决方案2】:

      假设您希望能够扩展您的值集,您可以将枚举替换为导出常量的 ts 文件。它不是最先进的,而是一种替代方案。

      TS 文件 我的常量.ts

      export const HEART_RATE = "HeartRate";
      export const CO2 = "CO2";
      // and so forth
      

      您的组件

      import { HEART_RATE, CO2 } from 'my-constants.ts';
      
      // ...
      
      await MyHealthLibrary.requestAuthorization([HEART_RATE]);
      

      【讨论】:

        猜你喜欢
        • 2011-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-13
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        相关资源
        最近更新 更多