TypeScript中是否有接口来描述类声明?
function module(name: string, classDeclaration: IClass) {
this.classHash[name] = classDeclaration; //example use of class declaration
}
答案 0 :(得分:1)
在JavaScript中,只有函数。 TypeScript&中的class
关键字EcmaScript 6(用于此问题的目的)用于创建构造函数并填充其原型的糖。因此,TypeScript中“类”的通用接口与任何构造函数的接口相同:
interface Class<T> {
new (...args: any[]): T;
prototype: T;
}
答案 1 :(得分:0)
不要为您的函数module
命名,它是TypeScript中的关键字。 AFAIK没有这样的界面或类,但你可以创建自己的界面IClass
,我强烈推荐。
一个例子是:
interface IClass {}
class MyClass implements IClass {}
class MySecondClass implements IClass {}
function myModule(name: string, classDeclaration: IClass) {
this.classHash[name] = classDeclaration; //example use of class declaration
}
myModule("1", MyClass);
myModule("2", new MyClass());
myModule("3", MySecondClass);
答案 2 :(得分:0)
没有。我原本期望Function
(或FunctionConstructor
)成为这样的界面,但是,没有。
令人不安的是,正如预期的那样,在下面的代码中,typeof
返回的类型为function
...但function
(小写f
)是在Typescript中既不是类型也不是接口。所以答案必须是否定的。
"use strict";
class Hello {
private s: string
constructor(s: string) {
this.s= s
}
public sayHello() {
console.log(`Hello ${this.s}`)
}
}
function instantiate<T>(clazz: any, name: string): T {
console.log(`Type of clazz: ${typeof clazz}`)
return new clazz(name) as any as T
}
instantiate<Hello>(Hello, 'John').sayHello()