我可以将类或接口类型作为参数传递给函数吗

时间:2019-08-15 12:25:33

标签: typescript

我可以将类或接口类型作为参数传递给函数吗? 另外,如何判断类或接口是否声明了属性? hasOwnPropery方法用于实例化对象,不能满足我的需求。

我想创建一个limitdAssign函数,但是我不知道该怎么做。

interface IStudent {
  name: string;
}

interface ISeniorStudent {
  name: string;
  height: number;
}

 it('type cast ', () => {
    const seniorStudent: ISeniorStudent = { name: 'alan', height: 177 };
    console.log('Class: , Function: , Line 18 (): ', JSON.stringify(seniorStudent));
 // {"name":"alan","height":177}
    const stu = { ...seniorStudent } as IStudent;
    console.log('Class: , Function: , Line 21 (): ', JSON.stringify(limitedAssign(seniorStudent))); 
// {"name":"alan"}
  });

1 个答案:

答案 0 :(得分:0)

您的问题有两个部分:

  1. 接口 type 不能作为参数传递。运行TypeScript代码时,实际上是将其编译为JavaScript,然后运行JavaScript。接口是TypeScript编译时构造,因此在运行时,没有接口类型可以调用函数或检查其属性。但是,它们仍然可以在编译时使用,例如定义参数类型,返回类型,以及在这些定义的generics中使用。

  2. 在强类型语言中传统上考虑的类在JavaScript中不存在。 JavaScript class关键字仅声明了special type of function

因此,不存在反映“类”和“接口”定义的操作。您获得的最接近的结果是,在运行时使用hasOwnProperty之类的函数或typeofinstanceof之类的运算符来检查对象。

请查看docs,以获取有关JavaScript原型继承系统的更详细说明。