我在文档中的许多地方都遇到了Type
关键字。例如,as seen here ComponentRef
具有componentType
属性。它被称为类型Type<any>
。在进一步搜索时,我会在文档中找到关于它的this entry。它说:作为ES7装饰器调用。
同样在github上查看up the source,我发现这些评论:
/**
* @whatItDoes Represents a type that a Component or other object is instances of.
*
* @description
*
* An example of a `Type` is `MyCustomComponent` class, which in JavaScript is be represented by
* the `MyCustomComponent` constructor function.
但是我仍然不清楚Type
做了什么。我错过了什么基本的??
答案 0 :(得分:11)
根据定义判断:
export const Type = Function;
export interface Type<T> extends Function {
new (...args: any[]): T;
}
Type
只是一个功能。构造时Type<T>
只是一些函数/类型(使用任何参数组合),创建T
。换句话说,就是“类型”定义。请记住,javascript中的“类型”(在OO意义上)是使用函数表示的。这等同于打字稿中的类,接口等。
鉴于此,以下内容应该成立:
class Foo {
s: string;
}
class Bar {
s: number;
}
class Biz {
ss: string;
}
class Baz {
s: string;
t: number;
}
let x: Type<{ s: string }>; // x is a type that returns an object
// with an s property of type string
x = Foo; // ok
x = Bar; // error, s is not a string
x = Biz; // error, doesn't contain s property
x = Baz; // ok
x = { s: "foo" }; // haha nice try