让我们说我有一节课:
module MyModule {
export class MyClass {
x:number;
y:number;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个字符串,"x".如何检查MyClass是否具有属性"x"?
如果我创建一个MyClass实例然后执行:
myClassInstance.hasOwnProperty("x");
Run Code Online (Sandbox Code Playgroud)
它返回false,除非x设置了默认值.但我不想为每个属性设置默认值.如果我甚至可以在不创建MyClass实例的情况下做到这一点,那将是最好的.
TypeScript在执行前编译为JavaScript.在最终的JavaScript代码中,TypeScript的类型信息不再可用.因此,无法在运行时检查TypeScript类型信息.
如果要在编译时进行检查,可以使用接口,如以下示例所示:
interface IHasX
{
x:any;
}
class MyClassA {
x:number;
y:number;
}
class MyClassB {
y:number;
}
function Test(param: IHasX)
{
// Do something with param.x
}
var objA = new MyClassA();
var objB = new MyClassB();
Test(objA);
Test(objB);
Run Code Online (Sandbox Code Playgroud)
最后一行Test(objB);
将无法编译,因为TypeScript编译器知道它objB
是类型的MyClassB
,并且该类没有x
按接口要求命名的属性IHasX
.
归档时间: |
|
查看次数: |
20713 次 |
最近记录: |