我已经创建了这些构造函数实现:
constructor(position: FlagPosition, flag: string);
constructor(position: FlagPosition, flag: Expression<any> | string) {
this.position = position;
//TODO: Check falg type:
//if flag is an string
// this(position, ExpressionUtils.template(Object.class, flag));
//else
// this.flag = flag;
}
我不知道如何检查flag
参数是字符串还是Expression<any>
。
有什么想法吗?
答案 0 :(得分:1)
您可以使用
if (typeof flag === "string") {
//
} else if (name instanceof test) {
//
}
`
答案 1 :(得分:0)
在TS转换为JS时会发生什么以及在运行时会发生什么,你会发现错误。
flag: Expression<any> | string
在那里,当你调用函数时,TS会测试你是否正确传递了一个字符串或'Expression'。它在转换为JS时验证....
虽然
//TODO: Check falg type:
//if flag is an string
// this(position, ExpressionUtils.template(Object.class, flag));
//else
// this.flag = flag;
是在运行时生效的代码。在运行时'Expression'(这是一个接口)将不再存在(JS不知道接口是什么)。
因此,您测试参数的类型,但在构造函数的主体中,您应该将其视为具有接口属性的简单Object。