可调用的

    它可以表示一个返回值为 的函数:

    1. declare const foo: ReturnString;
    2. const bar = foo(); // bar 被推断为一个字符串。

    当然,像这样一个可被调用的类型注解,你也可以根据实际来传递任何参数、可选参数以及 rest 参数,这有一个稍微复杂的例子:

    1. interface Overloaded {
    2. (foo: string): string;
    3. }
    4. function stringOrNumber(foo: number): number;
    5. function stringOrNumber(foo: string): string;
    6. function stringOrNumber(foo: any): any {
    7. if (typeof foo === 'number') {
    8. return foo * foo;
    9. return `hello ${foo}`;
    10. }
    11. const overloaded: Overloaded = stringOrNumber;
    12. // 使用
    13. const str = overloaded(''); // str 被推断为 'string'

    这也可以用于内联注解中:

    为了使指定可调用的类型签名更容易,TypeScript 也允许你使用简单的箭头函数类型注解。例如,在一个以 number 类型为参数,以 string 类型为返回值的函数中,你可以这么写:

    1. const simple: (foo: number) => string = foo => foo.toString();

    它仅仅只能做为简单的箭头函数,你无法使用重载。如果想使用它,你必须使用完整的 { (someArgs): someReturn } 的语法

    可实例化仅仅是可调用的一种特殊情况,它使用 做为前缀。它意味着你需用使用 new 关键字去调用它: