如何在angular中对数据类型使用ngSwitch?
我在Angular2工作,很想知道当变量是某些DataType.i.e时,我是否可以使用ngswitch加载 标签. 这样的东西: This is Object This is Array This is Boolean This is Number This is Simple Text ! 当变量具有某些数据类型时,这是否可以加载div标签? 如果没有,则有任何解决方法? 解决方案 另一种选择是使用
0 2024-02-21
编程技术问答社区
我如何使一个我不能改变的类实现一个接口?
我有一个封闭源的库中的类,但是我希望能够为其使用接口.原因是我不想进行instanceof检查或null - 到处检查,但我也不想扩展现有类. 例如,假设我有此代码: public class Example { // QuietFoo is from another library that I can't change private static QuietFoo quietFoo; // LoudFoo is my own code and is meant to replace QuietFoo private static LoudFoo loudFoo; public static void main(String[] args) { handle(foo); } private static void handle(Object foo) { if (foo inst
4 2024-01-10
编程技术问答社区
带有抽象参数和继承的Java抽象方法
我最近陷入了API和实现的问题,其中出现以下代码类型: public abstract class A { public A sum(A a) { System.out.println("A.sum(A) called"); return null; } } 实现是一个简单的类: public class B extends A { public B sum(B b) { System.out.println("B.sum(B) called"); return null; } } 在使用它时,我写了: public class Main { public static void main(String[] args) { B b = new B(); A basa = new B(); b.sum(b); basa.sum(b); basa.sum(basa); } } 导致
0 2024-01-09
编程技术问答社区
instanceof运算符在通过窗口传递对象时失败
为了在Windows之间传递数据,我通过window.open方法打开新窗口,并将新打开的窗口的属性设置为对象.这不仅可以传递数据,还可以共享变量的实例,这意味着如果我修改对象或其任何派生属性,在一个窗口上,它会在所有窗口上修改. . 但是,问题对操作员的实例非常有趣. 当我做 时 typeof m m instanceof Object 第一行返回"object"而第二行返回false. 我特别需要操作员实例来检查数组和对象之间. 这是一个示例的小提琴(警告:尝试在页面加载上打开窗口,因此弹出式阻滞剂可能会阻止它). 解决方案 由于您的窗口的Object和源窗口的Object不是同一回事,因此一个实例不会是另一个实例.您可以使用Object.prototype.toString区分对象和数组: if(Object.prototype.toString.call(m) === '[object Array]') { // It's an a
32 2023-12-04
编程技术问答社区
"instanceof Void "是否总是返回false?
此方法可以返回true以某种方式? public static boolean isVoid(T t) { return t instanceof Void; } 解决方案 是的,但是我敢肯定这不是真正有用的: public static void main(final String[] args) throws Exception { final Constructor c = Void.class.getDeclaredConstructors()[0]; c.setAccessible(true); System.out.println(c.newInstance(null) instanceof Void); } a Void类无法实例化,因此通常您的代码不需要处理Void实例.上面的代码段只是一个示例,说明使用反射时可以释放什么?; - ) 其他解决方案 我看不到为什么您会检查一个值是否是void(或Void
2 2023-11-25
编程技术问答社区
如何理解类型`new(... Args:Any [])=>任何'
我正在阅读 class-validator 库,它具有以下内容isInstance其中的方法: /** * Checks if the value is an instance of the specified object. */ isInstance(object: any, targetTypeConstructor: new (...args: any[]) => any) { return targetTypeConstructor && typeof targetTypeConstructor === "function" && object instanceof targetTypeConstructor; } 关于如何理解类型new (...args: any[]) => any的任何想法?这是我第一次看到这种类型的构造... 解决方案 让我们将这种类型减少到更容易理解的较小的咬合大小的碎片,然后重新建立到完整
4 2023-11-12
编程技术问答社区
如何用编译时的泛型验证取代运行时的instanceof检查
为真正的Java Generics专家提供了一些难题...;) 假设我有以下两个接口: interface Processor { void process(Foo foo); } interface Foo { Processor getProcessor(); } ,例如,以下两个实现类: static class SomeProcessor implements Processor { static final SomeProcessor INSTANCE = new SomeProcessor(); @Override public void process(Foo foo) { if (foo instanceof SomeFoo) { //
8 2023-11-12
编程技术问答社区
如何有效地检查变量是数组还是对象(在NodeJS和V8中)?
在nodejs&v8中,有什么方法可以有效检查变量是对象还是数组? 我正在为mongoDB和nodejs编写一个模型,要遍历对象树,我需要知道对象是否简单(数字,字符串,...)或复合(哈希,数组). V8似乎具有快速内置Array.isArray,但是如何检查对象是否是对象?我的意思是像哈希{}或类的复杂对象,而不是new String()? 之类的东西 通常可以这样做: Object.prototype.toString.call(object) == "[object Object]" 或以下: object === Object(object) ,但似乎这项操作并不便宜,也许有更有效的效率?可以,如果它不是通用,并且对所有引擎都不起作用,那么我只需要在V8上工作. 解决方案 所有对象都是Ecmascript中至少一个类 - Object的实例.您只能使用Object#toString区分内置类和普通对象的实例.它们都具有相同级别的复杂性
10 2023-11-12
编程技术问答社区
了解TS的类型通过扩展和工具的组合推断/狭窄
我有以下示例代码 class B implements Error { name: string = ''; message: string = ''; // stack?: undefined | string; } function Foo(x: any) { if(x instanceof Error) { if(x instanceof B) { x.stack; // works } } } abstract class C { someProp: number = 0; } class D extends C implements Error{ name: string = ''; message: string = ''; // stack?: undefined | string } function Bar(x: any) { if(x instanceof Error) { i
12 2023-11-01
编程技术问答社区
检查变量是否属于Typescript中的自定义类型
我正在尝试检查一个变量是否属于某种类型. 代码: type GeneralType = SubTypeA | SubTypeB; type SubTypeA = 'type1' | 'type2'; type SubTypeB = 'type3' | 'type4'; function someFunction(arg1: GeneralType) { if (arg1 instanceof SubTypeA) { // Do something } // Continue function return arg1; } 当然,此代码在第6行中失败,因为instanceof不适用于类型.我可以使用替代选项,而无需明确检查SubTypeA>>? 的所有提出值 解决方案 如评论中提到的那样,似乎没有实现这一目标的障碍方法. 最后,我发现的最优雅的方式是使用type GeneralType = SubTypeA | SubTypeB; ty
6 2023-10-31
编程技术问答社区
接口上的检查实例
给定以下代码: module MyModule { export interface IMyInterface {} export interface IMyInterfaceA extends IMyInterface {} export interface IMyInterfaceB extends IMyInterface {} function(my: IMyInterface): void { if (my instanceof IMyInterfaceA) { // do something cool } } } 我遇到了"找不到名称Imyinterfacea"的错误.处理这种情况的正确方法是什么? 解决方案 无法运行时检查接口,因为类型信息不会以任何方式转换为编译的JavaScript代码. 您可以检查特定属性或方法并决定该怎么做. module MyModule { export inte
4 2023-10-31
编程技术问答社区
继承错误会破坏TypeScript中的`instanceof'检查
有人可以向我解释为什么error instanceof CustomError以下代码的部分是false? class CustomError extends Error {} const error = new CustomError(); console.log(error instanceof Error); // true console.log(error instanceof CustomError); // false ??? class ParentClass {} class ChildClass extends ParentClass { } const child = new ChildClass(); console.log(child instanceof ParentClass); // true console.log(child instanceof ChildClass); // true 关于错误对象有特别的事情吗?我想制作自己可以
6 2023-10-31
编程技术问答社区
typescript myobject.instanceof()
我们的所有打字稿类都从: 中继承(直接或间接) export class WrObject { className:string; public instanceOf(name : String) : boolean { return this.className === name; } } 然后,我们将一个子类声明为: export class Section extends WrObject { public static CLASS_NAME = 'Section'; className = Section.CLASS_NAME; public instanceOf(name : String) : boolean { if (this.className === name) return true; return
4 2023-10-31
编程技术问答社区
TypeScript instanceof不工作
我使用运算符的实例遇到问题,但似乎不起作用.这是我的代码的一部分: const results = _.map(items, function(item: Goal|Note|Task, index: number) { let result = {}; if (item instanceof Goal) { result = { id: index, title: item.name }; } else if (item instanceof Note) { result = { id: index, title: item.content.text }; } else if (item instanceof Task) { result = { id: index, ti
10 2023-10-31
编程技术问答社区
为什么TypeScript中的'instanceof'会给我带来错误"'Foo'只指一个类型,但在这里被当作一个值使用"?
我写了此代码 interface Foo { abcdef: number; } let x: Foo | string; if (x instanceof Foo) { // ... } 但是打字稿给了我这个错误: 'Foo' only refers to a type, but is being used as a value here. 为什么会发生这种情况?我以为instanceof可以检查我的价值是否具有给定类型,但是打字稿似乎不喜欢. 解决方案 tl; dr instanceof使用类,而不是接口或类型别名. 打字稿试图告诉我什么? 问题是 instanceof instanceof 是JavaScript的构造,在JavaScript中,instanceof期望右侧操作数的 value . 具体来说,在x instanceof Foo中,JavaScript将执行运行时检查以查看Foo.prototype是否
12 2023-10-31
编程技术问答社区
php实例返回false for for true条件
我对为什么PHP的instanceof操作员坚持认为,当get_class说这是定义类的实例. class WhereIn { public function __construct($args) { echo "is instanceof: " . ($args[0] instanceof ActiveRecordField) . EOL; echo "get class: " . get_class($args[0]) . EOL; } } 此方法的输出是: is instanceof: get class: ActiveRecordField 供参考,我正在使用PHP 5.6.9. 解决方案 如果您在代码中使用名称空间,则需要直接提供: if ($args[0] instanceof ActiveRecordField) // False if ($args[0] instanceof \MyCo
6 2023-10-30
编程技术问答社区
我可以设置Javascript对象的类型吗?
遵循道格·克劳福德(Doug Crawford)的"超级构造函数"模式,我正在尝试使用JavaScript的一些更高级的OO功能.但是,我不知道如何使用JavaScript的本机类型系统从对象设置和获取类型.这就是我现在的方式: function createBicycle(tires) { var that = {}; that.tires = tires; that.toString = function () { return 'Bicycle with ' + tires + ' tires.'; } } 如何设置或检索新对象的类型?如果有正确的方法,我不想创建type属性. 有没有办法覆盖我的自定义对象的typeof或instanceof运算符? 解决方案 instanceof 聚集了两个操作数值后,使用摘要 [[HasInstance]](V) 操作,依赖原型链. 您发布的图案仅由增强对象组成,而原型
8 2023-10-30
编程技术问答社区
在GDB中,如何从一个基类的指针中确定一个对象是否是某些派生C++类的实例?
我正在使用GDB调试C ++程序. 我有一个指向某些类的对象的指针.指针被宣布为某些超级类,该类别由几个子类扩展. 对象中没有字段来指定此对象的精确类类型,但是某些虚拟函数(例如Bool IS_XXX())被定义为在运行时告诉类类型. 是否有某种方法可以在GDB中说出对象的精确类型,而无需调用这些虚拟函数.在程序多线程时,在GDB中调用此类功能可能会产生令人困惑的结果. 解决方案 使用ptype.如果您单独使用它,则会获得指针的声明类型: (gdb) ptype ptr type = class SuperClass { // various members } * 要获取对象的实际类型,请设置"打印对象"变量: (gdb) set print object on (gdb) ptype ptr type = /* real type = DerivedClass * */ class SuperClass { // various me
6 2023-10-30
编程技术问答社区
java中的转换类型
在我开始之前,我知道这个问题有很多答案,这些答案暗示了其他方法.我正在为这种特殊的方法寻求帮助,以便是否有可能,如果没有,则可能会起作用的类似方法. 我有一种方法,可以采用超类并根据传递对象的类型调用一种方法.例如: public void handle(Object o){ if (o instanceof A) handleA((A)o); else if (o instanceof B) handleB((B)o); else if (o instanceof C) handleC((C)o); else handleUnknown(o); 我无法修改子类型以覆盖handle()方法,例如 >建议,因为我不拥有课程.所以instanceof方法就是我所拥有的. 我想使用switch语句,而不是if/else,仅仅是因为它更整洁.我知道您只能打开原始和字符串,所以我要切换班级名称: switch(o.get
0 2023-10-30
编程技术问答社区