Typescript确保给定的param是实现接口的对象的实例

时间:2015-07-11 22:08:12

标签: typescript

我有一个声明方法的接口。该方法接受一些参数,其中一个参数必须是实现另一个接口的任何对象。我该怎么做这个检查?

interface SkematicValidatorInterface {
    validate(resource: SkematicModelInterface, value:any);
}

正如您可能已经猜到的那样,在我的代码中的某个地方,我有另一个名为SkematicModelInterface的接口,它必须是传递的每个resource的基础。

1 个答案:

答案 0 :(得分:0)

  

该方法接受一些参数,其中一个参数必须是实现另一个接口的任何对象...我有另一个名为SkematicModelInterface的接口,它必须是传递的每个资源的基础......我怎么能做这个检查?

解决方案

您的界面:

interface SkematicValidatorInterface {
    validate(callback: (resource: SkematicModelInterface, value:any) => void) : void;
}

正是您正在寻找的支票。

用法:

interface SkematicModelInterface{
    data: string;
}

interface SkematicValidatorInterface {
    validate(callback: (resource: SkematicModelInterface, value:any) => void) : void;
}

var foo: SkematicValidatorInterface;

var c1 = (resource: number, value: any) => null;
var c2 = (resource: SkematicModelInterface, value: any) => null;

foo.validate(c1); // Error
foo.validate(c2); // Okay