猿问

如何解释以下函数的声明


export declare abstract class AbstractBootstrapConsole<A extends INestApplicationContext, O extends CommonBootstrapConsoleOptions = CommonBootstrapConsoleOptions> {

    protected service: ConsoleService;

    protected container: A;

    protected readonly options: O;

    constructor(options: O);

    protected useDecorators(): this;

    init(): Promise<A>;

    getService(): ConsoleService;

    getOptions(): O;

    boot(argv?: string[]):     

    Promise<CommandResponse>;

    abstract create(): Promise<A>;

}

我试图理解这个函数类声明。它是 nestjs-console 模块的一部分。我无法理解声明。做什么


class A<B extends C, D extends E = F>

意思是?将来,我将如何自己查找?我在 Typescript 的文档中找不到这个。


更新:得到了一些非常明确的答案!谢谢你们!


千巷猫影
浏览 78回答 2
2回答

大话西游666

这些被称为泛型。class A<B extends C, D extends E = F>您正在定义一个名为 A 的类,它接受两个泛型参数,称为 B 和 D。B 必须扩展接口 C,D 必须扩展接口 E。如果没有提供泛型参数 D,则默认为接口 F。interface C {&nbsp; &nbsp; name: string;}interface E {&nbsp; &nbsp; something: number;}interface F extends E {&nbsp; &nbsp; somethingElse: boolean;}class A<B extends C, D extends E = F> {&nbsp; &nbsp; constructor(b: B, d: D) {&nbsp; &nbsp; }}interface D extends C {&nbsp; &nbsp; surname: string;}const a: A<D> = {}; // Optional generic parameter default to F, constuctor parameter d must be of type F.https://www.typescriptlang.org/docs/handbook/generics.html

一只名叫tom的猫

让我们把它分解成独立的部分。class&nbsp;Foo<T>这意味着这Foo是一个接受泛型类型参数的类T,对此没有什么特别的。创建 的实例时Foo,您需要提供一个具体的T.class&nbsp;Foo<T&nbsp;extends&nbsp;U>我们在这里添加的是对泛型类型参数的约束T。您可以将其阅读为T must be assignable to U.一个更实际的例子可能是class&nbsp;Foo<T&nbsp;extends&nbsp;any[]>我们在其中说T必须是一个数组。最后一点是class&nbsp;Foo<T&nbsp;=&nbsp;U>它只是提供了一个默认类型参数,以防T在创建Foo.
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答