我有一个像这样的枚举(只是大一点):
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),并且我不知道如何定义一种排除该键但保留所有其他键的类型。
有没有办法做到这一点?
注意:这不是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) 可以说我有
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可以修改它的地方,而不会在我的服务级别中产生噪音。
这可能吗?
我有一个对象配置,我在其中向函数发送函数回调。
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 为什么这么说以及如何修复它,因为我真的不明白它。
来自 Karma,我喜欢保持浏览器选项卡打开,以不时检查测试的代码覆盖率。是否可以使用笑话生成覆盖范围文件夹,而不用笑话在控制台中打印覆盖范围?
我还没有找到任何关于此的 cli 或配置。
给定接口
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) 我有这个辅助函数:
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,但没有成功。
我知道当一个应用程序有很多部件和组件时,最好将它们分成延迟加载的模块,这样用户就可以快速看到应用程序主页。
问题是我注意到导航到延迟加载模块的组件显示用户交互(单击按钮/菜单)和显示组件时(与非延迟加载组件相比)之间存在一些延迟。
有没有办法手动预加载延迟加载的模块?所以假设用户看到了主屏幕,如果在 3 秒内什么也没做,那么在后台加载我的一些关键应用程序模块。
我有这个用例。当布尔可观察值列表中其中一个为真时,组件不应该是可见的。这是简单的部分,为此,我的服务有一个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) 当我为 Windows 8.1 或 10 构建 Xamarin 项目(在“本地机器”中运行它)时,我在左上角得到一些数字,如“0”:
我在没有运气的情况下搜索了它(可能我使用了错误的关键字),那些是什么?我可以改变他们的位置或禁用他们吗?