小编dis*_*nte的帖子

在 Enum 中使用 key 时排除枚举项

我有一个像这样的枚举(只是大一点):

export enum MyTypeEnum {
    one = 'one',
    two = 'two',
    three = 'three',
    four = 'four'
}
Run Code Online (Sandbox Code Playgroud)

我用它来定义需要以这种方式拥有这些键的类型:

export type MyTypeKeyFunctionValue = { [key in MyTypeEnum ]?: Function };
export type MyTypeKeyStringValue = { [key in MyTypeEnum ]?: string };
Run Code Online (Sandbox Code Playgroud)

所以在我的课堂上我可以做这样的事情:

private memberWithFunctions: MyTypeKeyFunctionValue; 
Run Code Online (Sandbox Code Playgroud)

MyTypeEnum现在,我遇到了一种特殊情况,当某些成员需要拥有除一个之外的所有键(可以说two),并且我不知道如何定义一种排除该键但保留所有其他键的类型。

有没有办法做到这一点?

typescript

5
推荐指数
1
解决办法
5850
查看次数

使用 Java 中的 switch 比较字符串和枚举值

注意:这不是Java switch 语句的重复:需要常量表达式,但它是常量,因为该链接的解决方案已在此处应用。


在带有打字稿的 Cordova 应用程序中,我使用此枚举来发送我的操作=

打字稿

enum PluginActions {
   PICK = "PICK",
   PICK_MULTIPLE = "PICK_MULTIPLE"
}
Run Code Online (Sandbox Code Playgroud)

我将其发送给 cordova,并在 Java 中将其作为我的方法中的字符串变量获取action

@Override
  public boolean execute(String action, JSONArray inputs, CallbackContext callbackContext) throws JSONException {

  }

Run Code Online (Sandbox Code Playgroud)

那里我还有一个枚举。

爪哇

enum PickerActions {
  PICK, PICK_MULTIPLE
}
Run Code Online (Sandbox Code Playgroud)

我想比较 typescriptPluginActions和 java PickerActions

使用if我可以使用:

if (action.equals(PickerActions.PICK.name())) { }

但我想用一个开关来做到这一点,这样我就可以轻松添加更多操作

  switch (action) {
    case PickerActions.PICK.name():
      JSONObject filters = inputs.optJSONObject(0);
      this.chooseFile(filters, callbackContext);
      return true;
    default:
    Log.w(this.LOGGER_TAG, "No function was found …
Run Code Online (Sandbox Code Playgroud)

java enums

5
推荐指数
1
解决办法
4026
查看次数

是否可以使用 Typescript 将私有成员和方法映射为公共成员和方法?

可以说我有

class MyClass {
    private A = 5;

    public printA() {
        console.log(`A is ${this.A}`)
        this.updateA();
    }

    private updateA() {
        this.A = Math.random();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以映射它以将所有私有转换为公共?喜欢

const myClassWithAllPublic = <somethingHere>new MyClass();
Run Code Online (Sandbox Code Playgroud)

我的用例如下:

我有一个包含很多公共 API 的大型服务。我想构造更改类状态的调试函数,这样我就可以说“将 A 放入值 7”之类的内容。为此,我想发送到myClassWithAllPublic可以修改它的地方,而不会在我的服务级别中产生噪音。

这可能吗?

typescript

5
推荐指数
0
解决办法
455
查看次数

如何修复类型“AmetryMatcher&lt;any&gt;”不可分配给类型“() =&gt; void”。在茉莉花/笑话中

我有一个对象配置,我在其中向函数发送函数回调。

test('should create a ComponentMockwith the needed config', () => {
        const config: MyConfig = {
           // more options
          myCallback: jasmine.anything()
        };

        sut.doYourThing(config);

        expect(ComponentMock.create).toHaveBeenCalledWith(config);
      });
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,更新到最新的 jest/jasmine 后,我收到以下错误myCallback: jasmine.anything()

如何修复类型“AmetryMatcher”不可分配给类型“() => void”。在茉莉花/笑话中

如果我忽略该行,@ts-ignore我的测试将继续工作,但我想知道 linter 为什么这么说以及如何修复它,因为我真的不明白它。

jasmine jestjs ts-jest

5
推荐指数
1
解决办法
2627
查看次数

是否可以在玩笑中激活覆盖范围但不在控制台中打印它?

来自 Karma,我喜欢保持浏览器选项卡打开,以不时检查测试的代码覆盖率。是否可以使用笑话生成覆盖范围文件夹,而不用笑话在控制台中打印覆盖范围?

我还没有找到任何关于此的 cli 或配置。

jestjs jest-preset-angular

4
推荐指数
1
解决办法
1825
查看次数

Typescript强制实现可选接口成员

给定接口

interface IAmOptional {
   optional? : string,
   optional2?: string
   forced: string
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以掩盖,扩展或类似IAmOptional方式导致此实施失败?

class someClass {
    thisShouldHaveAllKeys : IAmOptional  = { // Forced<IAmOptional> ??
        forced: 'i am forced'
    }  // Here I want an error like 'thisShouldHaveAllKeys does not have optional and optional2' 
}
Run Code Online (Sandbox Code Playgroud)

typescript

4
推荐指数
1
解决办法
332
查看次数

类型“string”不能用于索引类型“未知||” 或者如何让打字稿分配 Type[key] = SameType[key]

我有这个辅助函数:

getAndAssignToObject<T>(key: string, objectToAssign: T): Promise<T> {
  const data = await AppStorage.get<T>(key);
  Object.keys(data).forEach( dataKey => {
    // @ts-ignore
    objectToAssign[dataKey] = data[dataKey];
  });

  return data;
}
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用:

Helpers.getAndAssignToObject<BlockingConfig>(Components.BlockingRules, blockingData);
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但正如你所看到的,我有一个@ts-ignore我真的很想删除的。

删除它时出现的错误是:

元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型“unknown”。在类型“未知”.ts(7053) 上找不到带有“字符串”类型参数的索引签名

我不知道如何解决它。我尝试给出dataKey类型keyof T,但没有成功。

typescript

4
推荐指数
1
解决办法
2699
查看次数

可以在 Angular 8 中预加载延迟加载的模块吗?

我知道当一个应用程序有很多部件和组件时,最好将它们分成延迟加载的模块,这样用户就可以快速看到应用程序主页。

问题是我注意到导航到延迟加载模块的组件显示用户交互(单击按钮/菜单)和显示组件时(与非延迟加载组件相比)之间存在一些延迟。

有没有办法手动预加载延迟加载的模块?所以假设用户看到了主屏幕,如果在 3 秒内什么也没做,那么在后台加载我的一些关键应用程序模块。

angular

4
推荐指数
1
解决办法
877
查看次数

是否可以在运行时将可观察量添加到combineLatest(或类似的)中?

我有这个用例。当布尔可观察值列表中其中一个为真时,组件不应该是可见的。这是简单的部分,为此,我的服务有一个isBlocked$公共可观察的 API。

困难的部分是我需要在运行时注册新的可观察量,但保留我的isBlocked$引用,这样我当前的订阅就不会中断。

例子:

class MyService {
   isBlocked$: Observable<boolean> =  ?????

   
  add(observable: Observable<boolean>){
   }

}


// my component
...

myService.isBlocked$.subscribe(isBlocked => isBlocked)
// isBlocked = false
myService.add(of(true));
// isBlocked = true
Run Code Online (Sandbox Code Playgroud)

rxjs angular

4
推荐指数
1
解决办法
779
查看次数

xamarin 的/C# 可视化窗口构建上的黑底白字是什么意思?

当我为 Windows 8.1 或 10 构建 Xamarin 项目(在“本地机器”中运行它)时,我在左上角得到一些数字,如“0”:

在此处输入图片说明

我在没有运气的情况下搜索了它(可能我使用了错误的关键字),那些是什么?我可以改变他们的位置或禁用他们吗?

c# visual-studio xamarin xamarin.forms

3
推荐指数
1
解决办法
244
查看次数