类似于Typescript接口中的类型

时间:2017-06-14 11:09:21

标签: class typescript types interface

是否可以在界面中使用类似类型的类?例如,我有一个类Animal,我可以使用类似的东西:

interface I {
    object: Animal
}

我在这种情况下遇到错误:

class A {
     public static foo(text: string): string {
         return text;
     }
  }

interface IA {
  testProp: A;
  otherProp: any;
}

class B {
    constructor(prop: IA) {
        console.log(prop.otherProp);
        console.log(prop.testProp.foo('hello!'));
    }
}

TS2339:“A”类型中不存在“foo”属性

2 个答案:

答案 0 :(得分:0)

您需要使用typeof A

class A {
    public static foo(text: string): string {
        return text;
    }
}

interface IA {
  testProp: typeof A;
  otherProp: any;
}

class B {
    constructor(prop: IA) {
        console.log(prop.otherProp);
        console.log(prop.testProp.foo('hello!'));
    }
}

答案 1 :(得分:0)

代码中的问题是foo方法是静态的。静态只能用于不是对象的类。

在你的情况下:

A.foo("hello); //works
new A().foo("hello"); //doesn't work since it's an instance of A