firebase-js-sdk icon indicating copy to clipboard operation
firebase-js-sdk copied to clipboard

Interface 'FirebaseServerAppSettings' incorrectly extends interface 'FirebaseAppSettings' when "exactOptionalPropertyTypes": true is enabled

Open dckz74 opened this issue 1 year ago • 5 comments

Operating System

macOS Sonoma 14.4.1

Browser Version

Chrome/124.0.6367.119

Firebase SDK Version

10.11.1

Firebase SDK Product:

Analytics, Auth, Component, Installations, Logger

Describe your project's tooling

Vue3 app with Vite and Jest

Describe the problem

I'm encountering a TypeScript compilation error involving FirebaseServerAppSettings when "exactOptionalPropertyTypes": true is set in my tsconfig.json. This is the error message:

error TS2430: Interface 'FirebaseServerAppSettings' incorrectly extends interface 'FirebaseAppSettings'.
  Types of property 'name' are incompatible.
    Type 'undefined' is not assignable to type 'string'.

If I set "exactOptionalPropertyTypes" to false it works. Here you can see both interfaces:

export declare interface FirebaseAppSettings {
    name?: string;
    automaticDataCollectionEnabled?: boolean;
}
export declare interface FirebaseServerAppSettings extends FirebaseAppSettings {
    authIdToken?: string;
    releaseOnDeref?: object;
    name?: undefined;
}

Steps and code to reproduce issue

  1. In your TypeScript project, set "exactOptionalPropertyTypes": true in tsconfig.json.
  2. Execute vite build to build the project.

dckz74 avatar May 07 '24 12:05 dckz74

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

google-oss-bot avatar May 07 '24 12:05 google-oss-bot

Hi @dckz74, I was not able to reproduce the issue. I attempted to reproduce the issue with the following steps:

  1. npm create vite@latest
  2. cd vite-app
  3. yarn install && yarn install firebase
  4. Modify src/main.ts to be the following
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { initializeApp } from 'firebase/app';

const firebaseConfig = { 
    // My config (omitted)
};

initializeApp(firebaseConfig);
createApp(App).mount('#app')
  1. Add "exactOptionalPropertyTypes": true to tsconfig.json
  2. Run npx vite build

This was the output from the build

$ npx vite build
vite v5.2.11 building for production...
✓ 25 modules transformed.
dist/index.html                  0.46 kB │ gzip:  0.30 kB
dist/assets/index-B87vROlf.css   1.27 kB │ gzip:  0.65 kB
dist/assets/index-Cmnve67z.js   90.79 kB │ gzip: 30.66 kB
✓ built in 355ms

To help me reproduce the issue, could you provide a code snippet that causes the issue to occur, or a minimal project I can clone to reproduce the issue?

dlarocque avatar May 07 '24 15:05 dlarocque

Hey @dlarocque, thanks for your quick response!

You are right, this does not reproduce the issue, my bad. Unfortunately, I am currently not able to give you a minimal project to reproduce this issue.

I will need to look deeper into my code base to see why the issue occurs. Thank you for your time!

dckz74 avatar May 08 '24 12:05 dckz74

Hey @dlarocque, thanks for your quick response!

You are right, this does not reproduce the issue, my bad. Unfortunately, I am currently not able to give you a minimal project to reproduce this issue.

I will need to look deeper into my code base to see why the issue occurs. Thank you for your time!

No worries! Please let us know when you are able to share more information that could help us identify the issue.

dlarocque avatar May 08 '24 13:05 dlarocque

Hey @dckz74. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

google-oss-bot avatar May 15 '24 01:05 google-oss-bot

Since there haven't been any recent updates here, I am going to close this issue.

@dckz74 if you're still experiencing this problem and want to continue the discussion just leave a comment here and we are happy to re-open this.

google-oss-bot avatar May 22 '24 01:05 google-oss-bot