接口声明函数

    1. interface ReturnString {
    2. (): string;
    3. }
    4. let foo: ReturnString;
    5. const bar = foo!();

    type 声明函数

    1. type ReturnString = {
    2. (): string;
    3. }
    4. let foo: ReturnString;
    5. const bar = foo!();

    interface 和 type 声明重载

    1. type TOverloadedSum = {
    2. (a: number, b: number): number;
    3. (a: string, b: string): string;
    4. }
    5. interface IOverloadedSum {
    6. (a: number, b: number): number;
    7. (a: string, b: string): string;
    8. }

    声明可实例化的类型

    1. interface CanNew {
    2. new (...args: any[]): string
    3. }
    4. let fn: CanNew;
    5. const foo = new fn!();