Typescript:检查参数是否为
我创建了以下构造函数实现:Typescript:检查参数是否为,typescript,typescript2.0,Typescript,Typescript2.0,我创建了以下构造函数实现: 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
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;
}
构造函数(位置:FlagPosition,flag:string);
构造函数(位置:FlagPosition,标志:表达式|字符串){
这个位置=位置;
//TODO:检查falg类型:
//如果标志是字符串
//这个(位置,表达式utils.template(Object.class,flag));
//否则
//this.flag=flag;
}
我不知道如何检查标志
参数是字符串还是表达式
有什么想法吗?你可以用
if (typeof flag === "string") {
//
} else if (name instanceof test) {
//
}
`您在TS传输到JS时发生的事情和运行时发生的事情之间犯了错误
flag: Expression<any> | string
是将在运行时生效的代码。在运行时,“表达式”(即接口)将不再存在(JS不知道接口是什么)
<> >您测试参数的类型,但是在构造函数的主体中,应该考虑一个具有接口属性的简单对象。 <代码>(type FLAG===)字符串{{/*做*/}} /代码>?并且为了检查<代码>标志< /代码>是类型<代码>表达式< /代码>?或者将其放入另一个子句中。(请相信只有字符串或表达式提供给构造函数),或者如果
Expression
是一个类,你可以做flag instanceof Expression
。但是我不确定Expression
到底是什么。Expression
是一个接口…在这种情况下,它将取决于它的成员是什么/实现了什么。你能发布接口定义吗?你介意在下面编辑你的答案吗检查顺序标志是否为表达式类型?您不能在运行时根据接口检查类型。传输的javascript对您的Typescript接口定义一无所知。
//TODO: Check falg type:
//if flag is an string
// this(position, ExpressionUtils.template(Object.class, flag));
//else
// this.flag = flag;