我可以将类或接口类型作为参数传递给函数吗? 另外,如何判断类或接口是否声明了属性? 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"}
});
答案 0 :(得分:0)
您的问题有两个部分:
接口 type 不能作为参数传递。运行TypeScript代码时,实际上是将其编译为JavaScript,然后运行JavaScript。接口是TypeScript编译时构造,因此在运行时,没有接口类型可以调用函数或检查其属性。但是,它们仍然可以在编译时使用,例如定义参数类型,返回类型,以及在这些定义的generics中使用。
在强类型语言中传统上考虑的类在JavaScript中不存在。 JavaScript class
关键字仅声明了special type of function。
因此,不存在反映“类”和“接口”定义的操作。您获得的最接近的结果是,在运行时使用hasOwnProperty
之类的函数或typeof
和instanceof
之类的运算符来检查对象。
请查看docs,以获取有关JavaScript原型继承系统的更详细说明。