繁体   English   中英

在 typescript 类型中定义 class 类型

[英]Defining class type in type typescript

我在我的一个项目中使用 ts,我在这里有点初学者:

我有这样的东西

import * as admin from "firebase-admin";
import { Request } from "express";

export interface FileStorage {
  storage: admin.storage.Storage;
  rootBucket: any,
  bucketName: string | undefined;
}

export class FileStorage implements FileStorage {
  constructor() {
    this.storage = admin.storage();
    this.rootBucket = this.storage.bucket();
    this.bucketName = admin.instanceId().app.options.storageBucket;
  }

在上面的代码片段中,我的 rootBucket 的类型是any 我希望它更精确:

这是存储界面

  interface Storage {
    /**
     * Optional app whose `Storage` service to
     * return. If not provided, the default `Storage` service will be returned.
     */
    app: admin.app.App;
    /**
     * @returns A [Bucket](https://cloud.google.com/nodejs/docs/reference/storage/latest/Bucket)
     * instance as defined in the `@google-cloud/storage` package.
     */
    bucket(name?: string): Bucket;
  }
}

如果我cmd + click Bucket 然后它需要你

declare class Bucket extends ServiceObject {

您可以在ZBF215181B51405222137B3D4F6B73544AZ上找到声明 class 存储桶

在您的情况下,您可以跳过接口并直接在 class 中声明成员变量。 您可以从库中导入 Bucket class 并将其用于您的 class:

import * as admin from "firebase-admin";
import { Bucket } from "@google-cloud/storage"

export class FileStorage {
  storage: admin.storage.Storage = admin.storage();
  rootBucket: Bucket;
  bucketName: string | undefined;

  constructor() {
    this.rootBucket = this.storage.bucket();
    this.bucketName = admin.instanceId().app.options.storageBucket;
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM