Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript:检查参数是否为_Typescript_Typescript2.0 - Fatal编程技术网

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;