Был ли Firebase.js 7.x нарушать совместимость с Typescript 2.6.x? - PullRequest
1 голос
/ 01 ноября 2019

Мы использовали Firebase (только база данных) в проекте Ionic 3.x без каких-либо ошибок компиляции, пока Firebase не выпустил версию 7.0.0. Общая версия Typescript, используемая в проектах Ionic 3.x: 2.6.2.

Есть ли что-то, что мы можем сделать, чтобы решить эту проблему, зная, что нельзя обновить нашу зависимость Typescript? Или это ошибка Firebase или пропущенная поддержка (о которой не сообщалось)?

Стандартный способ импорта библиотеки:

import * as firebase from 'firebase/app';
import 'firebase/database';

Выход ионной подачи:

[app-scripts] [10:36:47]  transpile started ... 
[app-scripts] [10:36:54]  typescript: node_modules/firebase/index.d.ts, line: 4336 
[app-scripts]             ';' expected. 
[app-scripts]     L4335:  gtagName?: string;
[app-scripts]     L4336:  /** Sets custom name for `dataLayer` array used by gtag. */
[app-scripts]     L4337:  dataLayerName?: string;
[app-scripts] [10:36:54]  typescript: node_modules/firebase/index.d.ts, line: 4336 
[app-scripts]             'EventNameString' only refers to a type, but is being used as a value here. 
[app-scripts]     L4335:  gtagName?: string;
[app-scripts]     L4336:  /** Sets custom name for `dataLayer` array used by gtag. */
[app-scripts]     L4337:  dataLayerName?: string;
[app-scripts]             'never' only refers to a type, but is being used as a value here. 
[app-scripts]     L4335:  gtagName?: string;
[app-scripts] [10:36:54]  typescript: node_modules/firebase/index.d.ts, line: 4336 
[app-scripts] [10:36:54]  typescript: node_modules/firebase/index.d.ts, line: 4336 
[app-scripts]     L4336:  /** Sets custom name for `dataLayer` array used by gtag. */     
[app-scripts]     L4337:  dataLayerName?: string;
[app-scripts]             Cannot find name 'T'. 
[app-scripts]     L4335:  gtagName?: string;
[app-scripts]     L4336:  /** Sets custom name for `dataLayer` array used by gtag. */ 
[app-scripts]     L4337:  dataLayerName?: string;

Так что на данный момент мы застряли с базой 6.6.2.

1 Ответ

2 голосов
/ 05 ноября 2019

Краткий ответ - да. Приятные ребята из Firebase пролили немного света: https://github.com/firebase/firebase-js-sdk/issues/2335#issuecomment-549606361

Да, это нарушило совместимость с версиями Typescript до версии 2.8. Это не было преднамеренным, но мы использовали условный тип для аналитики, который не распознается версиями Typescript до 2.8. Вы можете обновить версию Typescript? Я смог npm i typcript @ latest в моем тестовом проекте Ionic и успешно запустить его, но я не знаю, есть ли у вас другие ограничения, препятствующие обновлению.

Мы изучаем, что мы можем сделатьчтобы исправить это для пользователей более ранних версий Typescript, но если вы можете безопасно обновить Typescript до версии 2.8+, это может быть самый быстрый способ разблокировать вас на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...