由于TypeScript 3.0,新的top type unknown可作为任何类型的类型安全对应项使用。
我真的很喜欢这种类型,因为它使代码更加健壮。
我的主要问题是,TypeScript(显然)在运行时没有为接口提供instanceof
-特性。如果可能的话,此代码将非常有效:
class Test {
doSomething(value: unknown) {
if(value instanceof MySuperInterface) {
return value.superFunction();
}
return false;
}
}
我的问题
如何以有意义的方式使用此类型,而无需检查接口的每个属性?
在运行时,JavaSept不检查接口类型。
Typescript:instanceof check on接口
但是,您可以对类使用未知类型,如下所示:
interface MySuperInterface {
superfunction(): string;
}
class MySuperImplementation implements MySuperInterface {
superfunction(): string {
return "Hello from super function";
}
}
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
testSuperFunction(value: unknown) {
if (value instanceof MySuperImplementation) {
return value.superfunction();
}
else {
return "Error";
}
}
}
let greeter = new Greeter("world");
const sfunc = new MySuperImplementation();
console.log(greeter.testSuperFunction(sfunc));
https://www.typescriptlang.org/play/index.html#src=interfaceMySuperInterface{ 超级函数():字符串; } 类MySuperImplementation实现MySuperInterface{ 超级函数():字符串{ 返回“Hello from super function”; } } 迎宾员{ 问候语:字符串; 构造函数(消息:string){ 这问候=留言; } 问候{ 返回“你好,”+这个。招呼 } testSuperFunction(值:未知){ if(MySuperImplementation的值实例){ 返回值。超函数(); } 否则{ 返回“错误”; } } } 让迎宾员=新迎宾员(“世界”); const sfunc=new MySuperImplementation(); 安慰日志(greeter.testSuperFunction(sfunc));
我有一个问题要解决,我应该在哪里从使用Java8 streams的员工列表中找到性别为男性的第n个员工,如果没有找到,则返回可选的空。 下面是接受Employee对象列表和整数n的方法,其中n表示必须返回的第n个男性雇员(如果存在的话)。
我正在玩grpc 有人成功使用进行生产吗?我们需要包括特使在内的所有依赖项吗?
我看到的所有解决方案都需要使用。但是,我想在Eclipse之外的单个文件上使用CDT解析器。那有什么办法吗?
我有一个带有私有方法的类,该方法调用一些外部类并执行它,如果不使用powermock,我如何防止这种情况发生?(该项目使用Junit5,目前还不支持powermock)。 我考虑过将这些函数移到外面,但我觉得有时方法确实属于特定的类,因为它们是它的一部分,将它们移出对我来说没有意义,下面只是一个例子来说明。 我已经知道大多数人会说不要测试私有方法,但a.我不完全同意,b.我不想在这里测试这个方法,
问题内容: 我看到了一些这样的代码: 我以为应该有一个? 为什么这段代码这样做呢? 问题答案: 如果您希望当前执行的方法仍引发异常,同时允许适当地清理资源,则这很有用。下面是处理调用方法中的异常的具体示例。
问题内容: 我在整个应用程序中都使用spring 。现在,我也想为一个没有的创建一个。那有可能吗? 问题答案: JPA要求每个实体都有一个ID。因此,不可以,没有ID的实体是不允许的。 每个JPA实体都必须有一个主键。 从JPA规范 您可能想从这里阅读更多有关JPA如何处理数据库端没有ID的情况的信息(请参阅“无主键”)。