Skip to content

[reactive-element] Type 'Component' is not assignable to type 'ReactiveElement'. Types have separate declarations of a private property '__instanceProperties'. #3241

@petergaal91

Description

@petergaal91

Which package(s) are affected?

Lit Core (lit / lit-html / lit-element / reactive-element)

Description

With lit@2.2.8 lit decorators works as expected, but if I wanted to upgrade to 2.3.0 or above I get this typescript error:

component.ts: error TS2345: Argument of type 'Component' is not assignable to parameter of type 'ReactiveElement | ClassElement'.
  Type 'Component' is not assignable to type 'ReactiveElement'.
    Types have separate declarations of a private property '__instanceProperties'.

Component code:

export class Component extends LitElement {
	@query('[part="feedback"]') readonly $feedback!: HTMLElement;
	...
}

image

Reproduction

I didn't had time to create a reproduction repo, but if it's needed I can make.

We use the following tsconfig.json compilerOptions:

{
  "compilerOptions": {
    "baseUrl": ".",
    "target": "es2018",
    "module": "esnext",
    "moduleResolution": "node",
    "declaration": true,
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "sourceMap": true,
    "resolveJsonModule": true,
    "useDefineForClassFields": false,
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts"
  ]
}

Workaround

Workaround is to use 2.2.x version

Is this a regression?

Yes. This used to work, but now it doesn't.

Affected versions

Failing since 2.3.0, worked in 2.2.8

Browser/OS/Node environment

node: 16.15.1
typescript: 4.7.4
OS: macOS 12.5

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions