给出以下代码:
module MyModule {
export interface IMyInterface {}
export interface IMyInterfaceA extends IMyInterface {}
export interface IMyInterfaceB extends IMyInterface {}
function(my: IMyInterface): void {
if (my instanceof IMyInterfaceA) {
// do something cool
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误"找不到名字IMyInterfaceA".处理这种情况的正确方法是什么?
由于类型信息未以任何方式转换为已编译的JavaScript代码,因此无法对运行时检查接口.
您可以检查特定属性或方法,并决定要执行的操作.
module MyModule {
export interface IMyInterface {
name: string;
age: number;
}
export interface IMyInterfaceA extends IMyInterface {
isWindowsUser: boolean;
}
export interface IMyInterfaceB extends IMyInterface {
}
export function doSomething(myValue: IMyInterface){
// check for property
if (myValue.hasOwnProperty('isWindowsUser')) {
// do something cool
}
}
}
Run Code Online (Sandbox Code Playgroud)
TypeScript对接口使用duck typing,因此您只需检查对象是否包含某些特定成员:
if ((<IMyInterfaceA>my).someCoolMethodFromA) {
(<IMyInterfaceA>my).someCoolMethodFromA();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8190 次 |
最近记录: |