Typescript: проблема с поиском правильного типа в нескольких (связанных с Firebase) библиотеках - PullRequest
0 голосов
/ 27 января 2020

У меня проблемы с поиском правильных типов для Firebase из-за количества библиотек, из которых он извлекает типы. В этом отношении, вероятно, это хорошая проблема для изучения этой проблемы.

Я использую Phpstorm 2019.3, я понимаю, что VSCode намного лучше помогает при наборе текста.

Вот метод:

  protected buildQueryUpToWhereClauseChain(priorQuery: any, whereClauses: WhereDefinition[]): FirebaseFirestore.Query {

    // = by default. overridden if meets condition
    let preparedWheresQuery: FirebaseFirestore.Query = priorQuery;
    if (whereClauses.length > 0) {
      preparedWheresQuery = whereClauses
        .reduce((accumulatedQuery, {column, operator, value}) => {
          return accumulatedQuery.where(column, operator, value);
        }, priorQuery);

    }

    return preparedWheresQuery;
  }

Тест на расширенном классе выше:

import firebase from "firebase";
import * as admin from "firebase-admin";

test('builds .where() query', () => {
    const openFirestoreConnection = new OpenFirestoreConnection('testdomain.shopify.com', createTestDatabase(null));

    const startingQuery = openFirestoreConnection.database
      .collection("collectionName")
      .where("storeId", "==", openFirestoreConnection.shopDomain);

    const whereClauses: WhereDefinition[] = [{
      column: "testColumn"
      , operator: '=='
      , value: "testValue"
    }, {
      column: "testColumn2"
      , operator: '<='
      , value: "testValue2"
    }];

    const builtQuery = openFirestoreConnection.buildQueryUpToWhereClauseChain(startingQuery, whereClauses);

// admin is from firebase-admin library
// Expected constructor: Query. Received constructor: Query
    expect(builtQuery).toBeInstanceOf(admin.firestore.Query);

// this one is from "firebase" library as documented here
// https://firebase.google.com/docs/reference/js/firebase.firestore.CollectionReference.html#where
// https://firebase.google.com/docs/reference/js/firebase.firestore.Query.html
// Expected constructor: PublicConstructor. Received constructor: Query
//     expect(builtQuery).toBeInstanceOf(firebase.firestore.Query);
  });

Если бы кто-нибудь мог объяснить, как найти правильный набор текста в подобных случаях, я был бы признателен, спасибо.

// package.json
// dependencies
    "firebase": "^7.5.0",
    "firebase-admin": "^8.8.0",
    "firebase-functions": "^3.3.0",
// devDependencies
    "@firebase/firestore-types": "^1.9.0",
    "@firebase/testing": "^0.16.6",
    "@types/firebase": "^3.2.1",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...